3690 Mikael Ronstrom 2012-01-09 [merge]
merge
modified:
storage/ndb/memcache/src/ClusterConnectionPool.cc
storage/ndb/src/ndbjtie/ndbapi_jtie.hpp
3689 jonas oreland 2012-01-05 [merge]
merge 72 into wl5929_72
modified:
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
storage/ndb/src/kernel/blocks/trpman.cpp
storage/ndb/src/kernel/blocks/trpman.hpp
storage/ndb/src/kernel/vm/SimulatedBlock.hpp
storage/ndb/src/kernel/vm/TransporterCallback.cpp
storage/ndb/src/kernel/vm/TransporterCallbackKernel.hpp
storage/ndb/src/kernel/vm/mt.cpp
storage/ndb/src/kernel/vm/mt_thr_config.cpp
storage/ndb/src/kernel/vm/mt_thr_config.hpp
3688 jonas oreland 2012-01-04 [merge]
ndb - merge 72 to wl5929_72
modified:
storage/ndb/src/kernel/vm/ArrayPool.hpp
3687 jonas oreland 2012-01-04 [merge]
ndb - merge 70 to wl5929_72
modified:
storage/ndb/src/kernel/vm/mt.cpp
3686 jonas oreland 2012-01-04 [merge]
ndb - merge 72 into wl5929_72
added:
mysql-test/suite/ndb_rpl/r/ndb_rpl_bug_13440282.result
mysql-test/suite/ndb_rpl/r/ndb_rpl_ddl_open_trans.result
mysql-test/suite/ndb_rpl/t/ndb_rpl_bug_13440282.test
mysql-test/suite/ndb_rpl/t/ndb_rpl_ddl_open_trans.test
storage/ndb/src/kernel/vm/test_context.cpp
storage/ndb/src/kernel/vm/test_context.hpp
modified:
libmysqld/libmysqld.c
mysql-test/suite/ndb/r/ndb_column_properties.result
mysql-test/suite/ndb/r/ndb_multi.result
mysql-test/suite/ndb/t/ndb_column_properties.test
mysql-test/suite/ndb/t/ndb_multi.test
mysql-test/suite/ndb_team/t/ndb_autodiscover3.test
mysql-test/suite/sys_vars/t/disabled.def
sql/ha_ndb_index_stat.cc
sql/ha_ndbcluster.cc
sql/ha_ndbcluster_binlog.cc
sql/ndb_local_schema.cc
sql/ndb_local_schema.h
sql/ndb_thd_ndb.h
storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainFieldHandlerImpl.java
storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainTypeHandlerImpl.java
storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java
storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java
storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/spi/DomainTypeHandler.java
storage/ndb/clusterj/clusterj-core/src/main/resources/com/mysql/clusterj/core/Bundle.properties
storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-bad-connection-lifecycle-interceptor.properties
storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-connection-lifecycle-interceptor.properties
storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-statement-interceptor.properties
storage/ndb/clusterj/clusterj-jdbc/src/test/resources/clusterj.properties
storage/ndb/clusterj/clusterj-jpatest/src/main/java/com/mysql/clusterj/jpatest/AbstractJPABaseTest.java
storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaClusterj.properties
storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaMysql.properties
storage/ndb/clusterj/clusterj-openjpa/src/main/java/com/mysql/clusterj/openjpa/NdbOpenJPADomainTypeHandlerImpl.java
storage/ndb/clusterj/clusterj-openjpa/src/test/resources/META-INF/persistence.xml
storage/ndb/clusterj/clusterj-test/src/main/java/regression/Bug54619.java
storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/domaintypehandler/CrazyDomainTypeHandlerFactoryImpl.java
storage/ndb/clusterj/clusterj-tie/src/test/resources/clusterj.properties
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp
storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp
storage/ndb/src/kernel/error/ErrorReporter.cpp
storage/ndb/src/kernel/vm/CMakeLists.txt
storage/ndb/src/kernel/vm/DLList.hpp
storage/ndb/src/kernel/vm/DynArr256.cpp
storage/ndb/src/kernel/vm/SLList.hpp
storage/ndb/test/ndbapi/testNodeRestart.cpp
storage/ndb/test/ndbapi/testSystemRestart.cpp
3685 Mikael Ronström 2012-01-02
Another removal of false CPU cache line sharing
modified:
storage/ndb/src/kernel/vm/ArrayPool.hpp
=== modified file 'libmysqld/libmysqld.c'
--- a/libmysqld/libmysqld.c revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/libmysqld/libmysqld.c revid:mikael.ronstrom@stripped
@@ -85,7 +85,7 @@ mysql_real_connect(MYSQL *mysql,const ch
const char *passwd, const char *db,
uint port, const char *unix_socket,ulong client_flag)
{
- char name_buff[USERNAME_LENGTH];
+ char name_buff[USERNAME_LENGTH + 1];
DBUG_ENTER("mysql_real_connect");
DBUG_PRINT("enter",("host: %s db: %s user: %s (libmysqld)",
=== modified file 'mysql-test/suite/ndb/r/ndb_column_properties.result'
--- a/mysql-test/suite/ndb/r/ndb_column_properties.result revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/ndb/r/ndb_column_properties.result revid:mikael.ronstrom@stripped6-sanff2aqtuj8wph0
@@ -8,6 +8,7 @@ CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 6M
+EXTENT_SIZE 256k
ENGINE NDB;
create table t1 (a int column_format DYNAMIC STORAGE DISK) TABLESPACE ts1 engine NDB;
Warnings:
=== modified file 'mysql-test/suite/ndb/r/ndb_multi.result'
--- a/mysql-test/suite/ndb/r/ndb_multi.result revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/ndb/r/ndb_multi.result revid:mikael.ronstrom@stripped2aqtuj8wph0
@@ -212,3 +212,9 @@ show tables;
Tables_in_test
t1
drop table t1;
+SHOW TABLES FROM mysql LIKE 'ndb_schema';
+Tables_in_mysql (ndb_schema)
+SELECT count(1) FROM INFORMATION_SCHEMA.TABLES
+WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'ndb_schema';
+count(1)
+0
=== modified file 'mysql-test/suite/ndb/t/ndb_column_properties.test'
--- a/mysql-test/suite/ndb/t/ndb_column_properties.test revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/ndb/t/ndb_column_properties.test revid:mikael.ronstrom@stripped8wph0
@@ -14,6 +14,7 @@ CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 6M
+EXTENT_SIZE 256k
ENGINE NDB;
create table t1 (a int column_format DYNAMIC STORAGE DISK) TABLESPACE ts1 engine NDB;
=== modified file 'mysql-test/suite/ndb/t/ndb_multi.test'
--- a/mysql-test/suite/ndb/t/ndb_multi.test revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/ndb/t/ndb_multi.test revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -261,3 +261,10 @@ commit;
show tables;
drop table t1;
+#
+# The mysql.ndb_schema table should be not be visible in SHOW TABLES
+# or I_S.TABLES
+#
+SHOW TABLES FROM mysql LIKE 'ndb_schema';
+SELECT count(1) FROM INFORMATION_SCHEMA.TABLES
+ WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'ndb_schema';
=== added file 'mysql-test/suite/ndb_rpl/r/ndb_rpl_bug_13440282.result'
--- a/mysql-test/suite/ndb_rpl/r/ndb_rpl_bug_13440282.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb_rpl/r/ndb_rpl_bug_13440282.result revid:mikael.ronstrom@strippedqtuj8wph0
@@ -0,0 +1,118 @@
+include/master-slave.inc
+[connection master]
+CREATE TABLE `loadreptable` (
+`nid` int(11) NOT NULL,
+`nom` char(255) DEFAULT NULL,
+`prenom` char(255) DEFAULT NULL,
+`abc` char(255) DEFAULT NULL,
+`wkz` char(255) DEFAULT NULL,
+`xyz` char(255) DEFAULT NULL,
+PRIMARY KEY (`nid`) USING HASH
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
+CREATE PROCEDURE MAJ ()
+BEGIN
+DECLARE fini INT default 0;
+WHILE fini < 20 DO
+DELETE FROM loadreptable WHERE nid > 2;
+UPDATE loadreptable SET nid=nid+1 ORDER BY nid DESC;
+UPDATE loadreptable SET
+nom="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxx";
+INSERT INTO loadreptable VALUES(1,"w","t","y","k","b");
+SET fini=fini+1;
+END WHILE;
+END ;
+//
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+call MAJ();
+"master"
+select count(*) from loadreptable;
+count(*)
+3
+"slave"
+select count(*) from loadreptable;
+count(*)
+3
+drop table loadreptable;
+drop procedure MAJ;
+include/rpl_end.inc
=== added file 'mysql-test/suite/ndb_rpl/r/ndb_rpl_ddl_open_trans.result'
--- a/mysql-test/suite/ndb_rpl/r/ndb_rpl_ddl_open_trans.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb_rpl/r/ndb_rpl_ddl_open_trans.result revid:mikael.ronstrom@stripped-sanff2aqtuj8wph0
@@ -0,0 +1,53 @@
+include/master-slave.inc
+[connection master]
+create table t1 ( a int ) engine = ndb;
+begin;
+insert into t1 values(1);
+alter table t1 rename t2;
+commit;
+drop table t2;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+create table t1 ( a int primary key) engine = ndb;
+begin;
+insert into t1 values(1);
+alter online table t1 add column b int column_format dynamic;
+commit;
+drop table t1;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+create table t1 ( a int primary key) engine = ndb;
+begin;
+insert into t1 values(1);
+alter offline table t1 add column b int column_format dynamic;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+commit;
+drop table t1;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+create table t1 ( a int primary key, b int) engine = ndb;
+begin;
+insert into t1 values(1, 1);
+create online index ind_b on t1(b);
+commit;
+drop table t1;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+create table t1 ( a int primary key, b int, index ind_b (b)) engine = ndb;
+begin;
+insert into t1 values(1, 1);
+drop index ind_b on t1;
+commit;
+drop table t1;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+create database testdb;
+create table testdb.t1 (a int) engine = ndb;
+begin;
+insert into testdb.t1 values(1);
+alter database testdb charset = latin1;
+commit;
+drop database testdb;
+set global ndb_check_shares=1;
+set global ndb_check_shares=1;
+include/rpl_end.inc
=== added file 'mysql-test/suite/ndb_rpl/t/ndb_rpl_bug_13440282.test'
--- a/mysql-test/suite/ndb_rpl/t/ndb_rpl_bug_13440282.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb_rpl/t/ndb_rpl_bug_13440282.test revid:mikael.ronstrom@stripped
@@ -0,0 +1,53 @@
+--source include/have_ndb.inc
+--source include/have_binlog_format_mixed_or_row.inc
+--source suite/ndb_rpl/ndb_master-slave.inc
+
+CREATE TABLE `loadreptable` (
+ `nid` int(11) NOT NULL,
+ `nom` char(255) DEFAULT NULL,
+ `prenom` char(255) DEFAULT NULL,
+ `abc` char(255) DEFAULT NULL,
+ `wkz` char(255) DEFAULT NULL,
+ `xyz` char(255) DEFAULT NULL,
+ PRIMARY KEY (`nid`) USING HASH
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
+
+delimiter //;
+CREATE PROCEDURE MAJ ()
+BEGIN
+DECLARE fini INT default 0;
+WHILE fini < 20 DO
+DELETE FROM loadreptable WHERE nid > 2;
+UPDATE loadreptable SET nid=nid+1 ORDER BY nid DESC;
+UPDATE loadreptable SET
+nom="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+xxx";
+INSERT INTO loadreptable VALUES(1,"w","t","y","k","b");
+SET fini=fini+1;
+END WHILE;
+END ;
+//
+delimiter ;//
+
+--sync_slave_with_master
+
+let $i=10;
+while ($i)
+{
+ --connection master
+ call MAJ();
+ --echo "master"
+ select count(*) from loadreptable;
+ --sync_slave_with_master
+ --connection slave
+ --echo "slave"
+ select count(*) from loadreptable;
+ dec $i;
+}
+
+--connection master
+drop table loadreptable;
+drop procedure MAJ;
+
+--sync_slave_with_master
+--source include/rpl_end.inc
=== added file 'mysql-test/suite/ndb_rpl/t/ndb_rpl_ddl_open_trans.test'
--- a/mysql-test/suite/ndb_rpl/t/ndb_rpl_ddl_open_trans.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb_rpl/t/ndb_rpl_ddl_open_trans.test revid:mikael.ronstrom@strippedf2aqtuj8wph0
@@ -0,0 +1,7 @@
+--source include/have_ndb.inc
+--source include/ndb_have_online_alter.inc
+--source suite/ndb_rpl/ndb_master-slave.inc
+
+--source suite/ndb/t/ndb_ddl_open_trans.test
+
+--source include/rpl_end.inc
=== modified file 'mysql-test/suite/ndb_team/t/ndb_autodiscover3.test'
--- a/mysql-test/suite/ndb_team/t/ndb_autodiscover3.test revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/ndb_team/t/ndb_autodiscover3.test revid:mikael.ronstrom@stripped6-sanff2aqtuj8wph0
@@ -79,14 +79,6 @@ select * from t2 order by a limit 3;
select * from t2;
show tables like 't2';
reset master;
-#
-# Add this in 5.5...I don't want to disable all test
-# btw, we should add a new testcase for this
---disable_query_log
---disable_result_log
-drop table if exists t2;
---enable_result_log
---enable_query_log
create table t2 (a int key) engine=ndbcluster;
insert into t2 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
select * from t2 order by a limit 3;
@@ -117,15 +109,6 @@ reset master;
select * from t2;
show tables like 't2';
reset master;
-#
-# TODO 5.5 failure...
-# TODO we should write more comprehensive testcase for this
-#
---disable_query_log
---disable_result_log
-drop table if exists t2;
---enable_result_log
---enable_query_log
create table t2 (a int key) engine=ndbcluster;
insert into t2 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
select * from t2 order by a limit 3;
=== modified file 'mysql-test/suite/sys_vars/t/disabled.def'
--- a/mysql-test/suite/sys_vars/t/disabled.def revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/mysql-test/suite/sys_vars/t/disabled.def revid:mikael.ronstrom@stripped6-sanff2aqtuj8wph0
@@ -12,5 +12,6 @@
transaction_prealloc_size_basic_32 : Bug#11748572
transaction_prealloc_size_basic_64 : Bug#11748572
query_cache_size_basic_32 : Bug#11748572
+query_cache_size_basic_64 : Bug#11748572
#thread_cache_size_func : Bug#11750172: 2008-11-07 joro main.thread_cache_size_func fails in pushbuild when run with pool of threads
=== modified file 'sql/ha_ndb_index_stat.cc'
--- a/sql/ha_ndb_index_stat.cc revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ha_ndb_index_stat.cc revid:mikael.ronstrom@stripped
@@ -82,6 +82,7 @@ struct Ndb_index_stat {
char id[32];
#endif
time_t access_time; /* by any table handler */
+ time_t update_time; /* latest successful update by us */
time_t load_time; /* when stats were created by kernel */
time_t read_time; /* when stats were read by us (>= load_time) */
uint sample_version; /* goes with read_time */
@@ -556,7 +557,8 @@ struct Ndb_index_stat_glob {
uint query_count;
uint query_no_stats;
uint query_error;
- uint event_ok; /* Events received for known index */
+ uint event_act; /* Events acted on */
+ uint event_skip; /* Events skipped (likely event-to-self) */
uint event_miss; /* Events received for unknown index */
uint refresh_count; /* Successful cache refreshes */
uint clean_count; /* Times old caches (1 or more) cleaned */
@@ -569,7 +571,7 @@ struct Ndb_index_stat_glob {
uint cache_high_bytes; /* Max ever of above */
uint cache_drop_bytes; /* Part of above waiting to be evicted */
uint cache_evict_bytes; /* Part of above waiting to be evicted */
- char status[2][512];
+ char status[2][1024];
uint status_i;
Ndb_index_stat_glob();
@@ -592,7 +594,8 @@ Ndb_index_stat_glob::Ndb_index_stat_glob
query_count= 0;
query_no_stats= 0;
query_error= 0;
- event_ok= 0;
+ event_act= 0;
+ event_skip= 0;
event_miss= 0;
refresh_count= 0;
clean_count= 0;
@@ -651,7 +654,8 @@ Ndb_index_stat_glob::set_status()
sprintf(p, ",query:(all:%u,nostats:%u,error:%u)",
query_count, query_no_stats, query_error);
p+= strlen(p);
- sprintf(p, ",event:(ok:%u,miss:%u)", event_ok, event_miss);
+ sprintf(p, ",event:(act:%u,skip:%u,miss:%u)",
+ event_act, event_skip, event_miss);
p+= strlen(p);
sprintf(p, ",cache:(refresh:%u,clean:%u,pinned:%u,drop:%u,evict:%u)",
refresh_count, clean_count, pinned_count, drop_count, evict_count);
@@ -695,7 +699,8 @@ Ndb_index_stat_glob::zero_total()
query_count= 0;
query_no_stats= 0;
query_error= 0;
- event_ok= 0;
+ event_act= 0;
+ event_skip= 0;
event_miss= 0;
refresh_count= 0;
clean_count= 0;
@@ -719,6 +724,7 @@ Ndb_index_stat::Ndb_index_stat()
memset(id, 0, sizeof(id));
#endif
access_time= 0;
+ update_time= 0;
load_time= 0;
read_time= 0;
sample_version= 0;
@@ -1324,6 +1330,7 @@ ndb_index_stat_cache_evict(Ndb_index_sta
struct Ndb_index_stat_proc {
NdbIndexStat* is_util; // For metadata and polling
Ndb *ndb;
+ time_t start; // start of current processing slice
time_t now;
int lt;
bool busy;
@@ -1394,6 +1401,9 @@ ndb_index_stat_proc_update(Ndb_index_sta
pr.lt= Ndb_index_stat::LT_Error;
return;
}
+
+ pr.now= ndb_index_stat_time();
+ st->update_time= pr.now;
pr.lt= Ndb_index_stat::LT_Read;
}
@@ -1943,11 +1953,30 @@ ndb_index_stat_proc_event(Ndb_index_stat
/*
Put on Check list if idle.
We get event also for our own analyze but this should not matter.
+
+ bug#13524696
+ The useless event-to-self makes an immediate second analyze wait
+ for loop_idle time since the entry moves to LT_Check temporarily.
+ Ignore the event if an update was done near this processing slice.
*/
pr.lt= st->lt;
if (st->lt == Ndb_index_stat::LT_Idle ||
st->lt == Ndb_index_stat::LT_Error)
- pr.lt= Ndb_index_stat::LT_Check;
+ {
+ if (st->update_time < pr.start)
+ {
+ DBUG_PRINT("index_stat", ("st %s accept event for check", st->id));
+ pr.lt= Ndb_index_stat::LT_Check;
+ }
+ else
+ {
+ DBUG_PRINT("index_stat", ("st %s ignore likely event to self", st->id));
+ }
+ }
+ else
+ {
+ DBUG_PRINT("index_stat", ("st %s ignore event on lt=%d", st->id, st->lt));
+ }
}
void
@@ -1995,11 +2024,15 @@ ndb_index_stat_proc_event(Ndb_index_stat
*/
if (st != 0)
{
- DBUG_PRINT("index_stat", ("st %s proc %s", st->id, "Event"));
+ DBUG_PRINT("index_stat", ("st %s proc %s", st->id, "event"));
ndb_index_stat_proc_event(pr, st);
if (pr.lt != st->lt)
+ {
ndb_index_stat_list_move(st, pr.lt);
- glob.event_ok++;
+ glob.event_act++;
+ }
+ else
+ glob.event_skip++;
}
else
{
@@ -2164,6 +2197,8 @@ ndb_index_stat_proc(Ndb_index_stat_proc
Ndb_index_stat_glob old_glob= ndb_index_stat_glob;
#endif
+ pr.start= pr.now= ndb_index_stat_time();
+
ndb_index_stat_proc_new(pr);
ndb_index_stat_proc_update(pr);
ndb_index_stat_proc_read(pr);
=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ha_ndbcluster.cc revid:mikael.ronstrom@strippedtuj8wph0
@@ -58,6 +58,7 @@
#include "ndb_component.h"
#include "ndb_util_thread.h"
#include "ndb_local_connection.h"
+#include "ndb_local_schema.h"
// ndb interface initialization/cleanup
extern "C" void ndb_init_internal();
@@ -11205,8 +11206,7 @@ int ha_ndbcluster::delete_table(const ch
DBUG_ENTER("ha_ndbcluster::delete_table");
DBUG_PRINT("enter", ("name: %s", name));
- if ((thd == injector_thd) ||
- (thd_ndb->options & TNO_NO_NDB_DROP_TABLE))
+ if (thd == injector_thd)
{
/*
Table was dropped remotely is already
@@ -12298,44 +12298,45 @@ ndbcluster_find_files(handlerton *hton,
}
}
-#ifndef NDB_NO_MYSQL_RM_TABLE_PART2
- /*
- Delete old files
-
- ndbcluster_find_files() may be called from I_S code and ndbcluster_binlog
- thread in situations when some tables are already open. This means that
- code below will try to obtain exclusive metadata lock on some table
- while holding shared meta-data lock on other tables. This might lead to a
- deadlock but such a deadlock should be detected by MDL deadlock detector.
- */
- List_iterator_fast<char> it3(delete_list);
- while ((file_name_str= it3++))
+ if (thd == injector_thd)
{
- DBUG_PRINT("info", ("Removing table %s/%s", db, file_name_str));
- // Delete the table and all related files
- TABLE_LIST table_list;
- table_list.init_one_table(db, strlen(db),
- file_name_str, strlen(file_name_str),
- file_name_str,
- TL_WRITE);
- table_list.mdl_request.set_type(MDL_EXCLUSIVE);
- /*
- set TNO_NO_NDB_DROP_TABLE flag to not drop ndb table.
- it should not exist anyways
- */
- thd_ndb->options|= TNO_NO_NDB_DROP_TABLE;
- (void)mysql_rm_table_part2(thd, &table_list,
- false, /* if_exists */
- false, /* drop_temporary */
- false, /* drop_view */
- true /* dont_log_query*/);
- thd_ndb->options&= ~TNO_NO_NDB_DROP_TABLE;
- trans_commit_implicit(thd); /* Safety, should be unnecessary. */
- thd->mdl_context.release_transactional_locks();
- /* Clear error message that is returned when table is deleted */
- thd->clear_error();
+ /*
+ Don't delete anything when called from
+ the binlog thread. This is a kludge to avoid
+ that something is deleted when "Ndb schema dist"
+ uses find_files() to check for "local tables in db"
+ */
+ }
+ else
+ {
+ /*
+ Delete old files
+ (.frm files with corresponding .ndb + does not exists in NDB)
+ */
+ List_iterator_fast<char> it3(delete_list);
+ while ((file_name_str= it3++))
+ {
+ DBUG_PRINT("info", ("Deleting local files for table '%s.%s'",
+ db, file_name_str));
+
+ // Delete the table and its related files from disk
+ Ndb_local_schema::Table local_table(thd, db, file_name_str);
+ local_table.remove_table();
+
+ // Flush the table out of ndbapi's dictionary cache
+ Ndb_table_guard ndbtab_g(ndb->getDictionary(), file_name_str);
+ ndbtab_g.invalidate();
+
+ // Flush the table from table def. cache.
+ TABLE_LIST table_list;
+ memset(&table_list, 0, sizeof(table_list));
+ table_list.db= (char*)db;
+ table_list.alias= table_list.table_name= file_name_str;
+ close_cached_tables(thd, &table_list, false, 0);
+
+ DBUG_ASSERT(!thd->is_error());
+ }
}
-#endif
// Create new files
List_iterator_fast<char> it2(create_list);
@@ -12354,20 +12355,18 @@ ndbcluster_find_files(handlerton *hton,
my_hash_free(&ok_tables);
my_hash_free(&ndb_tables);
- // Delete schema file from files
+ /* Hide mysql.ndb_schema table */
if (!strcmp(db, NDB_REP_DB))
{
- uint count = 0;
- while (count++ < files->elements)
+ LEX_STRING* file_name;
+ List_iterator<LEX_STRING> it(*files);
+ while ((file_name= it++))
{
- file_name = (LEX_STRING *)files->pop();
if (!strcmp(file_name->str, NDB_SCHEMA_TABLE))
{
- DBUG_PRINT("info", ("skip %s.%s table, it should be hidden to user",
- NDB_REP_DB, NDB_SCHEMA_TABLE));
- continue;
+ DBUG_PRINT("info", ("Hiding table '%s.%s'", db, file_name->str));
+ it.remove();
}
- files->push_back(file_name);
}
}
} // extra bracket to avoid gcc 2.95.3 warning
=== modified file 'sql/ha_ndbcluster_binlog.cc'
--- a/sql/ha_ndbcluster_binlog.cc revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ha_ndbcluster_binlog.cc revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -3048,6 +3048,9 @@ class Ndb_schema_event_handler {
ndbcluster_rename_share(m_thd, share);
free_share(&share); // temporary ref.
+ ndbapi_invalidate_table(schema->db, schema->name);
+ mysqld_close_cached_table(schema->db, schema->name);
+
DBUG_VOID_RETURN;
}
=== modified file 'sql/ndb_local_schema.cc'
--- a/sql/ndb_local_schema.cc revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ndb_local_schema.cc revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -85,8 +85,19 @@ void Ndb_local_schema::Base::log_warning
my_vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
- sql_print_warning("Ndb schema[%s.%s]: %s",
- m_db, m_name, buf);
+ if (m_push_warnings)
+ {
+ // Append the error which caused the error to thd's warning list
+ push_warning_printf(m_thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
+ ER_GET_ERRMSG, "Ndb schema[%s.%s]: %s",
+ m_db, m_name, buf);
+ }
+ else
+ {
+ // Print the warning to log file
+ sql_print_warning("Ndb schema[%s.%s]: %s",
+ m_db, m_name, buf);
+ }
}
@@ -94,6 +105,12 @@ Ndb_local_schema::Base::Base(THD* thd, c
m_thd(thd),
m_db(db), m_name(name)
{
+ /*
+ System(or daemon) threads report error to log file
+ all other threads use push_warning
+ */
+ m_push_warnings = (thd->command != COM_DAEMON);
+
m_have_mdl_lock= mdl_try_lock();
}
=== modified file 'sql/ndb_local_schema.h'
--- a/sql/ndb_local_schema.h revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ndb_local_schema.h revid:mikael.ronstrom@stripped2aqtuj8wph0
@@ -26,6 +26,7 @@ class Ndb_local_schema
*/
class Base {
bool m_have_mdl_lock;
+ bool m_push_warnings;
bool mdl_try_lock(void) const;
void mdl_unlock(void);
=== modified file 'sql/ndb_thd_ndb.h'
--- a/sql/ndb_thd_ndb.h revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/sql/ndb_thd_ndb.h revid:mikael.ronstrom@stripped
@@ -39,13 +39,6 @@ enum THD_NDB_OPTIONS
lock, as one other mysqld already has the lock.
*/
TNO_NO_LOCK_SCHEMA_OP= 1 << 1
- /*
- Skip drop of ndb table in delete_table. Used when calling
- mysql_rm_table_part2 in "show tables", as we do not want to
- remove ndb tables "by mistake". The table should not exist
- in ndb in the first place.
- */
- ,TNO_NO_NDB_DROP_TABLE= 1 << 2
};
enum THD_NDB_TRANS_OPTIONS
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainFieldHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainFieldHandlerImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainFieldHandlerImpl.java revid:mikael.ronstrom@stripped-20120109124556-sanff2aqtuj8wph0
@@ -417,7 +417,7 @@ public abstract class AbstractDomainFiel
protected void reportErrors() {
if (errorMessages != null) {
- throw new ClusterJUserException(errorMessages.toString());
+ domainTypeHandler.setUnsupported(errorMessages.toString());
}
}
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainTypeHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainTypeHandlerImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/AbstractDomainTypeHandlerImpl.java revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -115,6 +115,9 @@ public abstract class AbstractDomainType
/** Set of index names to check for duplicates. */
protected Set<String> indexNames = new HashSet<String>();
+ /** Errors reported during construction; see getUnsupported(), setUnsupported(String) */
+ private StringBuilder reasons = null;
+
/** Register a primary key column field. This is used to associate
* primary key and partition key column names with field handlers.
* This method is called by the DomainFieldHandlerImpl constructor
@@ -428,4 +431,15 @@ public abstract class AbstractDomainType
return fieldNames;
}
+ public void setUnsupported(String reason) {
+ if (reasons == null) {
+ reasons = new StringBuilder();
+ }
+ reasons.append(reason);
+ }
+
+ public String getUnsupported() {
+ return reasons == null?null:reasons.toString();
+ }
+
}
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java revid:mikael.ronstrom@strippednff2aqtuj8wph0
@@ -255,7 +255,7 @@ public class DomainFieldHandlerImpl exte
} else {
objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
error(
- local.message("ERR_Unsupported_Field_Type", type.getName()));
+ local.message("ERR_Unsupported_Field_Type", type.getName(), name));
}
}
// Handle indexes. One index can be annotated on this field.
@@ -438,7 +438,7 @@ public class DomainFieldHandlerImpl exte
this.type = Byte.class;
break;
case Undefined:
- error(local.message("ERR_Unsupported_Field_Type", "Undefined"));
+ error(local.message("ERR_Unsupported_Field_Type", "Undefined", name));
objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
break;
case Unsigned:
@@ -458,7 +458,7 @@ public class DomainFieldHandlerImpl exte
this.type = Short.class;
break;
default:
- error(local.message("ERR_Unsupported_Field_Type", this.storeColumnType));
+ error(local.message("ERR_Unsupported_Field_Type", this.storeColumnType, name));
objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
}
}
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java revid:mikael.ronstrom@stripped
@@ -45,10 +45,8 @@ import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/** This instance manages a persistence-capable type.
* Currently, only interfaces can be persistence-capable. Persistent
@@ -226,12 +224,20 @@ public class DomainTypeHandlerImpl<T> ex
fieldNames = fieldNameList.toArray(new String[fieldNameList.size()]);
// done with methods; if anything in unmatched we have a problem
if ((!unmatchedGetMethods.isEmpty()) || (!unmatchedSetMethods.isEmpty())) {
- throw new ClusterJUserException(
+ setUnsupported(
local.message("ERR_Unmatched_Methods",
unmatchedGetMethods, unmatchedSetMethods));
}
}
+
+ // Check that no errors were reported during field analysis
+ String reasons = getUnsupported();
+ if (reasons != null) {
+ throw new ClusterJUserException(
+ local.message("ERR_Field_Construction", name, reasons.toString()));
+ }
+
// Check that all index columnNames have corresponding fields
// indexes without fields will be unusable for query
for (IndexHandlerImpl indexHandler:indexHandlerImpls) {
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/spi/DomainTypeHandler.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/spi/DomainTypeHandler.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/spi/DomainTypeHandler.java revid:mikael.ronstrom@stripped0
@@ -90,4 +90,6 @@ public interface DomainTypeHandler<T> {
public void operationSetValues(ValueHandler valueHandler, Operation op);
+ public void setUnsupported(String reason);
+
}
=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/resources/com/mysql/clusterj/core/Bundle.properties'
--- a/storage/ndb/clusterj/clusterj-core/src/main/resources/com/mysql/clusterj/core/Bundle.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-core/src/main/resources/com/mysql/clusterj/core/Bundle.properties revid:mikael.ronstrom@stripped8wph0
@@ -36,6 +36,7 @@ ERR_Get_Constructor:Cannot get Construct
ERR_Annotate_Set_Method:Property {0}: Cannot annotate set methods with {1}.
ERR_Primary_Field_Type:For class {0}, primary key column {1}: field type {2} is not supported.
ERR_Primary_Column_Type:For class {0}, primary key column {1}: column type {2} is not supported.
+ERR_Field_Construction:Error in metadata initialization for {0}:\n{1}
ERR_Value_Delegate:For field {0} column {1} valueDelegate {2}, error executing {3}.
ERR_Filter_Value:Error performing filter operation for field {0} column {1} \
valueDelegate {2}, value {3}.
=== modified file 'storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-bad-connection-lifecycle-interceptor.properties'
--- a/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-bad-connection-lifecycle-interceptor.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-bad-connection-lifecycle-interceptor.properties revid:mikael.ronstrom@stripped56-sanff2aqtuj8wph0
@@ -1,3 +1,18 @@
-jdbc.url=jdbc:mysql://localhost:9306/test?connectionLifecycleInterceptors=jdbctest.BadConnectionLifecycleInterceptor&poop=doop&com.mysql.clusterj.connectstring=localhost:9311
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+
+jdbc.url=jdbc:mysql://localhost:3306/test?connectionLifecycleInterceptors=jdbctest.BadConnectionLifecycleInterceptor&com.mysql.clusterj.connectstring=localhost:1186
jdbc.driverName=com.mysql.jdbc.Driver
-ndb.connectString=localhost:9311
+ndb.connectString=localhost:1186
=== modified file 'storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-connection-lifecycle-interceptor.properties'
--- a/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-connection-lifecycle-interceptor.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-connection-lifecycle-interceptor.properties revid:mikael.ronstrom@strippedsanff2aqtuj8wph0
@@ -1,3 +1,18 @@
-jdbc.url=jdbc:mysql://localhost:9306/test?statementInterceptors=com.mysql.clusterj.jdbc.StatementInterceptor&poop=doop&com.mysql.clusterj.connectstring=localhost:9311
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+
+jdbc.url=jdbc:mysql://localhost:3306/test?statementInterceptors=com.mysql.clusterj.jdbc.StatementInterceptor&com.mysql.clusterj.connectstring=localhost:1186
jdbc.driverName=com.mysql.jdbc.Driver
-ndb.connectString=localhost:9311
+ndb.connectString=localhost:1186
=== modified file 'storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-statement-interceptor.properties'
--- a/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-statement-interceptor.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/bad-connection-no-statement-interceptor.properties revid:mikael.ronstrom@stripped4556-sanff2aqtuj8wph0
@@ -1,3 +1,18 @@
-jdbc.url=jdbc:mysql://localhost:9306/test?connectionLifecycleInterceptors=com.mysql.clusterj.jdbc.ConnectionLifecycleInterceptor&poop=doop&com.mysql.clusterj.connectstring=localhost:9311
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+
+jdbc.url=jdbc:mysql://localhost:3306/test?connectionLifecycleInterceptors=com.mysql.clusterj.jdbc.ConnectionLifecycleInterceptor&com.mysql.clusterj.connectstring=localhost:1186
jdbc.driverName=com.mysql.jdbc.Driver
-ndb.connectString=localhost:9311
+ndb.connectString=localhost:1186
=== modified file 'storage/ndb/clusterj/clusterj-jdbc/src/test/resources/clusterj.properties'
--- a/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/clusterj.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-jdbc/src/test/resources/clusterj.properties revid:mikael.ronstrom@stripped0120109124556-sanff2aqtuj8wph0
@@ -1,10 +1,25 @@
-com.mysql.clusterj.connectstring=localhost:9311
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+
+com.mysql.clusterj.connectstring=localhost:1186
com.mysql.clusterj.connect.retries=4
com.mysql.clusterj.connect.delay=5
com.mysql.clusterj.connect.verbose=1
com.mysql.clusterj.connect.timeout.before=30
com.mysql.clusterj.connect.timeout.after=20
-com.mysql.clusterj.jdbc.url=jdbc:mysql://localhost:9306/test?statementInterceptors=com.mysql.clusterj.jdbc.StatementInterceptor&connectionLifecycleInterceptors=com.mysql.clusterj.jdbc.ConnectionLifecycleInterceptor&com.mysql.clusterj.connectstring=localhost:9311&cachePrepStmts=true&rewriteBatchedStatements=true
+com.mysql.clusterj.jdbc.url=jdbc:mysql://localhost:3306/test?statementInterceptors=com.mysql.clusterj.jdbc.StatementInterceptor&connectionLifecycleInterceptors=com.mysql.clusterj.jdbc.ConnectionLifecycleInterceptor&com.mysql.clusterj.connectstring=localhost:1186&cachePrepStmts=true&rewriteBatchedStatements=true
com.mysql.clusterj.jdbc.driver=com.mysql.jdbc.Driver
com.mysql.clusterj.jdbc.username=root
com.mysql.clusterj.jdbc.password=
=== modified file 'storage/ndb/clusterj/clusterj-jpatest/src/main/java/com/mysql/clusterj/jpatest/AbstractJPABaseTest.java'
--- a/storage/ndb/clusterj/clusterj-jpatest/src/main/java/com/mysql/clusterj/jpatest/AbstractJPABaseTest.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-jpatest/src/main/java/com/mysql/clusterj/jpatest/AbstractJPABaseTest.java revid:mikael.ronstrom@stripped0120109124556-sanff2aqtuj8wph0
@@ -409,7 +409,7 @@ public abstract class AbstractJPABaseTes
}
}
- protected void removeAll(Class<? extends IdBase> modelClass) {
+ protected void removeAll(Class<?> modelClass) {
Query query = em.createQuery("DELETE FROM " + modelClass.getSimpleName());
em.getTransaction().begin();
query.executeUpdate();
=== modified file 'storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaClusterj.properties'
--- a/storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaClusterj.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaClusterj.properties revid:mikael.ronstrom@stripped8wph0
@@ -1,5 +1,4 @@
-# Copyright 2010 Sun Microsystems, Inc.
-# All rights reserved. Use is subject to license terms.
+# Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
#
# 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
@@ -18,7 +17,7 @@
#exclude=navA->B0,navA->B0_opt
# OpenJPA - MySQL JDBC connection settings
-openjpa.ConnectionURL=jdbc:mysql://localhost:9306/test
+openjpa.ConnectionURL=jdbc:mysql://localhost:3306/test
openjpa.ConnectionDriverName=com.mysql.jdbc.Driver
openjpa.ConnectionUserName=md
openjpa.ConnectionPassword=
@@ -28,7 +27,7 @@ openjpa.Log=DefaultLevel=WARN
openjpa.ConnectionRetainMode=transaction
# OpenJPA - ClusterJ settings
-openjpa.ndb.connectString=localhost:9311
+openjpa.ndb.connectString=localhost:1186
openjpa.BrokerFactory=ndb
# JPA - Derby connection settings
=== modified file 'storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaMysql.properties'
--- a/storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaMysql.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-openjpa/crundOpenjpaMysql.properties revid:mikael.ronstrom@strippedom-20120109124556-sanff2aqtuj8wph0
@@ -1,5 +1,4 @@
-# Copyright 2010 Sun Microsystems, Inc.
-# All rights reserved. Use is subject to license terms.
+# Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
#
# 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
@@ -18,7 +17,7 @@
#exclude=navA->B0,navA->B0_opt
# OpenJPA - MySQL JDBC connection settings
-openjpa.ConnectionURL=jdbc:mysql://localhost:9306/test
+openjpa.ConnectionURL=jdbc:mysql://localhost:3306/test
openjpa.ConnectionDriverName=com.mysql.jdbc.Driver
openjpa.ConnectionUserName=md
openjpa.ConnectionPassword=
=== modified file 'storage/ndb/clusterj/clusterj-openjpa/src/main/java/com/mysql/clusterj/openjpa/NdbOpenJPADomainTypeHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-openjpa/src/main/java/com/mysql/clusterj/openjpa/NdbOpenJPADomainTypeHandlerImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-openjpa/src/main/java/com/mysql/clusterj/openjpa/NdbOpenJPADomainTypeHandlerImpl.java revid:mikael.ronstrom@stripped
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -653,7 +653,7 @@ public class NdbOpenJPADomainTypeHandler
}
}
- private void setUnsupported(String reason) {
+ public void setUnsupported(String reason) {
if (status != Status.BAD) {
if (logger.isDetailEnabled()) logger.detail("Class " + typeName + " marked as BAD.");
status = Status.BAD;
=== modified file 'storage/ndb/clusterj/clusterj-openjpa/src/test/resources/META-INF/persistence.xml'
--- a/storage/ndb/clusterj/clusterj-openjpa/src/test/resources/META-INF/persistence.xml revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-openjpa/src/test/resources/META-INF/persistence.xml revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -22,12 +22,12 @@
<class>com.mysql.clusterj.jpatest.model.B0</class>
<!--
<properties>
- <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:9306/test"/>
+ <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionRetainMode" value="transaction"/>
<property name="openjpa.DataCache" value="false"/>
<property name="openjpa.BrokerFactory" value="ndb"/>
- <property name="openjpa.ndb.connectString" value="localhost:9311"/>
+ <property name="openjpa.ndb.connectString" value="localhost:1186"/>
</properties>
-->
</persistence-unit>
@@ -57,13 +57,13 @@
<class>com.mysql.clusterj.jpatest.model.TimestampAsUtilDateTypes</class>
<class>com.mysql.clusterj.jpatest.model.TimestampAsSqlTimestampTypes</class>
<properties>
- <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:9306/test"/>
+ <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionRetainMode" value="transaction"/>
<property name="openjpa.DataCache" value="false"/>
<property name="openjpa.Log" value="SQL=trace"/>
<property name="openjpa.BrokerFactory" value="ndb"/>
- <property name="openjpa.ndb.connectString" value="localhost:9311"/>
+ <property name="openjpa.ndb.connectString" value="localhost:1186"/>
</properties>
</persistence-unit>
<persistence-unit name="jdbc" transaction-type="RESOURCE_LOCAL">
@@ -83,7 +83,7 @@
<class>com.mysql.clusterj.jpatest.model.LongIntStringPKOneOne</class>
<class>com.mysql.clusterj.jpatest.model.LongIntStringFKOneOne</class>
<properties>
- <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:9306/test"/>
+ <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionRetainMode" value="transaction"/>
<property name="openjpa.DataCache" value="false"/>
@@ -94,7 +94,7 @@
<class>com.mysql.clusterj.jpatest.model.Employee</class>
<properties>
<property name="openjpa.BrokerFactory" value="ndb"/>
- <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:9306/test"/>
+ <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
=== modified file 'storage/ndb/clusterj/clusterj-test/src/main/java/regression/Bug54619.java'
--- a/storage/ndb/clusterj/clusterj-test/src/main/java/regression/Bug54619.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-test/src/main/java/regression/Bug54619.java revid:mikael.ronstrom@stripped6-sanff2aqtuj8wph0
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -112,7 +112,7 @@ class Manager {
static void createClusterJSession() {
Properties properties = new Properties();
- properties.put("com.mysql.clusterj.connectstring", "localhost:9311");
+ properties.put("com.mysql.clusterj.connectstring", "localhost:1186");
properties.put("com.mysql.clusterj.database", "test");
sessionfactory = ClusterJHelper.getSessionFactory(properties);
=== modified file 'storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/domaintypehandler/CrazyDomainTypeHandlerFactoryImpl.java'
--- a/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/domaintypehandler/CrazyDomainTypeHandlerFactoryImpl.java revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/domaintypehandler/CrazyDomainTypeHandlerFactoryImpl.java revid:mikael.ronstrom@stripped
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -196,6 +196,10 @@ public class CrazyDomainTypeHandlerFacto
public void objectSetKeys(Object keys, Object instance) {
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ public void setUnsupported(String reason) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
};
} else {
return null;
=== modified file 'storage/ndb/clusterj/clusterj-tie/src/test/resources/clusterj.properties'
--- a/storage/ndb/clusterj/clusterj-tie/src/test/resources/clusterj.properties revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/clusterj/clusterj-tie/src/test/resources/clusterj.properties revid:mikael.ronstrom@strippeduj8wph0
@@ -1,4 +1,4 @@
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved.
#
# 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
@@ -13,16 +13,15 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#com.mysql.clusterj.connectstring=127.0.0.1:9311
-com.mysql.clusterj.connectstring=localhost:9311
+com.mysql.clusterj.connectstring=localhost:1186
#com.mysql.clusterj.connect.host=localhost
-#com.mysql.clusterj.connect.port=9311
+#com.mysql.clusterj.connect.port=1186
com.mysql.clusterj.connect.retries=4
com.mysql.clusterj.connect.delay=5
com.mysql.clusterj.connect.verbose=1
com.mysql.clusterj.connect.timeout.before=30
com.mysql.clusterj.connect.timeout.after=20
-com.mysql.clusterj.jdbc.url=jdbc:mysql://localhost:9306/test
+com.mysql.clusterj.jdbc.url=jdbc:mysql://localhost:3306/test
com.mysql.clusterj.jdbc.driver=com.mysql.jdbc.Driver
com.mysql.clusterj.jdbc.username=root
com.mysql.clusterj.jdbc.password=
=== modified file 'storage/ndb/memcache/src/ClusterConnectionPool.cc'
--- a/storage/ndb/memcache/src/ClusterConnectionPool.cc revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/memcache/src/ClusterConnectionPool.cc revid:mikael.ronstrom@stripped120109124556-sanff2aqtuj8wph0
@@ -165,7 +165,7 @@ Ndb_cluster_connection * ClusterConnecti
conn = connect(connect_string);
- if(conn->node_id()) {
+ if(conn && conn->node_id()) {
pool_connections[pool_size++] = conn;
}
else {
=== modified file 'storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp'
--- a/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp revid:mikael.ronstrom@stripped24556-sanff2aqtuj8wph0
@@ -57,6 +57,7 @@ extern int simulate_error_during_shutdow
// Index pages used by ACC instances
Uint32 g_acc_pages_used[1 + MAX_NDBMT_LQH_WORKERS];
+extern void mt_init_receiver_cache();
extern void mt_set_section_chunk_size();
Cmvmi::Cmvmi(Block_context& ctx) :
@@ -83,6 +84,7 @@ Cmvmi::Cmvmi(Block_context& ctx) :
g_sectionSegmentPool.setSize(long_sig_buffer_size,
true,true,true,CFG_DB_LONG_SIGNAL_BUFFER);
+ mt_init_receiver_cache();
mt_set_section_chunk_size();
// Add received signals
=== modified file 'storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp revid:mikael.ronstrom@strippedf2aqtuj8wph0
@@ -2345,6 +2345,17 @@ Dbacc::removerow(Uint32 opPtrI, const Lo
/* Mark element disappeared */
opbits |= Operationrec::OP_ELEMENT_DISAPPEARED;
opbits &= ~Uint32(Operationrec::OP_COMMIT_DELETE_CHECK);
+
+ /**
+ * This function is (currently?) only used when refreshTuple()
+ * inserts a record...and later wants to remove it
+ *
+ * Since this should not affect row-count...we change the optype to UPDATE
+ * execACC_COMMITREQ will be called in same timeslice as this change...
+ */
+ opbits &= ~Uint32(Operationrec::OP_MASK);
+ opbits |= ZUPDATE;
+
operationRecPtr.p->m_op_bits = opbits;
#ifdef VM_TRACE
@@ -2383,6 +2394,11 @@ void Dbacc::execACC_COMMITREQ(Signal* si
return;
} else {
jam();
+#ifdef ERROR_INSERT
+ ndbrequire(fragrecptr.p->noOfElements > 0);
+#else
+ ndbassert(fragrecptr.p->noOfElements > 0);
+#endif
fragrecptr.p->noOfElements--;
fragrecptr.p->slack += fragrecptr.p->elementLength;
if (fragrecptr.p->slack > fragrecptr.p->slackCheck) {
@@ -2402,16 +2418,6 @@ void Dbacc::execACC_COMMITREQ(Signal* si
}//if
} else {
jam(); /* EXPAND PROCESS HANDLING */
- if (unlikely(opbits & Operationrec::OP_ELEMENT_DISAPPEARED))
- {
- jam();
- /* Commit of refresh of non existing tuple.
- * ZREFRESH->ZWRITE->ZINSERT
- * Do not affect element count
- */
- ndbrequire((opbits & Operationrec::OP_MASK) == ZINSERT);
- return;
- }
fragrecptr.p->noOfElements++;
fragrecptr.p->slack -= fragrecptr.p->elementLength;
if (fragrecptr.p->slack >= (1u << 31)) {
=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp revid:mikael.ronstrom@stripped
@@ -4617,11 +4617,11 @@ void Dblqh::execLQHKEYREQ(Signal* signal
nextPos += 2;
}
+ regTcPtr->m_fire_trig_pass = 0;
Uint32 Tdeferred = LqhKeyReq::getDeferredConstraints(Treqinfo);
if (isLongReq && Tdeferred)
{
regTcPtr->m_flags |= TcConnectionrec::OP_DEFERRED_CONSTRAINTS;
- regTcPtr->m_fire_trig_pass = 0;
}
UintR TitcKeyLen = 0;
@@ -11910,6 +11910,12 @@ Uint32 Dblqh::sendKeyinfo20(Signal* sign
#endif
const bool longable = true; // TODO is_api && !old_dest;
+ if (isNdbMtLqh())
+ {
+ jam();
+ nodeId = 0; // prevent execute direct
+ }
+
Uint32 * dst = keyInfo->keyData;
dst += nodeId == getOwnNodeId() ? 0 : KeyInfo20::DataLength;
@@ -11943,11 +11949,6 @@ Uint32 Dblqh::sendKeyinfo20(Signal* sign
{
jam();
- if (isNdbMtLqh() && instance() != refToInstance(ref))
- {
- jam();
- nodeId = 0; // prevent execute direct
- }
if (nodeId == getOwnNodeId())
{
EXECUTE_DIRECT(refToBlock(ref), GSN_KEYINFO20, signal,
=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp revid:mikael.ronstrom@stripped2aqtuj8wph0
@@ -741,6 +741,7 @@ Dbtup::checkDeferredTriggersDuringPrepar
NoOfFiredTriggers::setDeferredBit(req_struct->no_fired_triggers);
return;
}
+ triggerList.next(trigPtr);
}
}
=== modified file 'storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp revid:mikael.ronstrom@stripped
@@ -259,6 +259,11 @@ struct Tup_varsize_page
{
return ((get_index_word(page_idx) & FREE) != 0) ? true : false;
}
+
+ bool is_empty() const
+ {
+ return high_index == 1;
+ }
};
NdbOut& operator<< (NdbOut& out, const Tup_varsize_page& page);
=== modified file 'storage/ndb/src/kernel/blocks/trpman.cpp'
--- a/storage/ndb/src/kernel/blocks/trpman.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/trpman.cpp revid:mikael.ronstrom@stripped2aqtuj8wph0
@@ -81,19 +81,22 @@ Trpman::execOPEN_COMREQ(Signal* signal)
&& c_error_9000_nodes_mask.get(tStartingNode)))
#endif
{
- if (handles_this_node(tStartingNode))
+ if (!handles_this_node(tStartingNode))
{
- globalTransporterRegistry.do_connect(tStartingNode);
- globalTransporterRegistry.setIOState(tStartingNode, HaltIO);
-
- //-----------------------------------------------------
- // Report that the connection to the node is opened
- //-----------------------------------------------------
- signal->theData[0] = NDB_LE_CommunicationOpened;
- signal->theData[1] = tStartingNode;
- sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
- //-----------------------------------------------------
+ jam();
+ goto done;
}
+
+ globalTransporterRegistry.do_connect(tStartingNode);
+ globalTransporterRegistry.setIOState(tStartingNode, HaltIO);
+
+ //-----------------------------------------------------
+ // Report that the connection to the node is opened
+ //-----------------------------------------------------
+ signal->theData[0] = NDB_LE_CommunicationOpened;
+ signal->theData[1] = tStartingNode;
+ sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
+ //-----------------------------------------------------
}
}
else
@@ -101,8 +104,7 @@ Trpman::execOPEN_COMREQ(Signal* signal)
for(unsigned int i = 1; i < MAX_NODES; i++ )
{
jam();
- if (i != getOwnNodeId() &&
- getNodeInfo(i).m_type == tData2 &&
+ if (i != getOwnNodeId() && getNodeInfo(i).m_type == tData2 &&
handles_this_node(i))
{
jam();
@@ -122,6 +124,7 @@ Trpman::execOPEN_COMREQ(Signal* signal)
}
}
+done:
if (userRef != 0)
{
jam();
@@ -386,25 +389,28 @@ Trpman::execDBINFO_SCANREQ(Signal *signa
while (rnode < MAX_NODES)
{
- if (handles_this_node(rnode))
+ if (!handles_this_node(rnode))
{
- switch(getNodeInfo(rnode).m_type)
- {
- default:
- {
- jam();
- Ndbinfo::Row row(signal, req);
- row.write_uint32(getOwnNodeId()); // Node id
- row.write_uint32(rnode); // Remote node id
- row.write_uint32(globalTransporterRegistry.getPerformState(rnode)); // State
- ndbinfo_send_row(signal, req, row, rl);
- break;
- }
+ rnode++;
+ continue;
+ }
- case NodeInfo::INVALID:
- jam();
- break;
- }
+ switch(getNodeInfo(rnode).m_type)
+ {
+ default:
+ {
+ jam();
+ Ndbinfo::Row row(signal, req);
+ row.write_uint32(getOwnNodeId()); // Node id
+ row.write_uint32(rnode); // Remote node id
+ row.write_uint32(globalTransporterRegistry.getPerformState(rnode)); // State
+ ndbinfo_send_row(signal, req, row, rl);
+ break;
+ }
+
+ case NodeInfo::INVALID:
+ jam();
+ break;
}
rnode++;
@@ -474,7 +480,7 @@ Trpman::execDUMP_STATE_ORD(Signal* signa
signal->theData[1] = i;
signal->theData[4] = 2;
execOPEN_COMREQ(signal);
- }
+ }
}
}
c_error_9000_nodes_mask.clear();
=== modified file 'storage/ndb/src/kernel/blocks/trpman.hpp'
--- a/storage/ndb/src/kernel/blocks/trpman.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/blocks/trpman.hpp revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -32,7 +32,7 @@ public:
BLOCK_DEFINES(Trpman);
void execCLOSE_COMREQ(Signal *signal);
- void execCLOSE_COMCONF(Signal *signal);
+ void execCLOSE_COMCONF(Signal * signal);
void execOPEN_COMREQ(Signal *signal);
void execENABLE_COMREQ(Signal *signal);
void execDISCONNECT_REP(Signal *signal);
=== modified file 'storage/ndb/src/kernel/error/ErrorReporter.cpp'
--- a/storage/ndb/src/kernel/error/ErrorReporter.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/error/ErrorReporter.cpp revid:mikael.ronstrom@strippedanff2aqtuj8wph0
@@ -45,6 +45,20 @@ static void dumpJam(FILE* jamStream,
const Uint32 thrdTheEmulatedJam[],
Uint32 aBlockNumber);
+static
+const char *
+ndb_basename(const char * path)
+{
+ const char separator = '/';
+ const char * p = path + strlen(path);
+ while (p > path && p[0] != separator)
+ p--;
+
+ if (p[0] == separator)
+ return p + 1;
+
+ return p;
+}
const char*
ErrorReporter::formatTimeStampString(){
@@ -152,7 +166,7 @@ ErrorReporter::formatMessage(int thr_no,
faultID,
(problemData == NULL) ? "" : problemData,
objRef,
- my_progname,
+ ndb_basename(my_progname),
processId,
thrbuf,
NDB_VERSION_STRING,
@@ -161,14 +175,11 @@ ErrorReporter::formatMessage(int thr_no,
if (theNameOfTheTraceFile)
{
- for (Uint32 i = 1 ; i < num_threads; i++)
+ sofar = (int)strlen(messptr);
+ if(sofar < MESSAGE_LENGTH)
{
- sofar = (int)strlen(messptr);
- if(sofar < MESSAGE_LENGTH)
- {
- BaseString::snprintf(messptr + sofar, MESSAGE_LENGTH - sofar,
- " %s_t%u", theNameOfTheTraceFile, i);
- }
+ BaseString::snprintf(messptr + sofar, MESSAGE_LENGTH - sofar,
+ " [t%u..t%u]", 1, num_threads);
}
}
@@ -237,7 +248,7 @@ ErrorReporter::handleError(int messageID
nst = s_errorHandlerShutdownType;
}
- WriteMessage(messageID, problemData, objRef, nst);
+ WriteMessage(messageID, ndb_basename(problemData), objRef, nst);
g_eventLogger->info("%s", problemData);
g_eventLogger->info("%s", objRef);
=== modified file 'storage/ndb/src/kernel/vm/ArrayPool.hpp'
--- a/storage/ndb/src/kernel/vm/ArrayPool.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/ArrayPool.hpp revid:mikael.ronstrom@strippedf2aqtuj8wph0
@@ -253,24 +253,24 @@ public:
#endif
protected:
- Uint32 size;
T * theArray;
- void * alloc_ptr;
- Uint32 noOfFreeMin;
+ Uint32 size;
/*
* Protect size and theArray which are very seldomly updated from
* updates of often updated variables such as firstFree, noOfFree.
* Protect here means to have them on separate CPU cache lines to
* avoid false CPU cache line sharing.
*/
- Uint32 protect_read_var[12];
+ char protect_read_var[64 - (sizeof(Uint32) + sizeof(void*))];
Uint32 firstFree;
Uint32 noOfFree;
+ Uint32 noOfFreeMin;
#ifdef ARRAY_GUARD
+ bool chunk;
Uint32 bitmaskSz;
Uint32 *theAllocatedBitmask;
- bool chunk;
#endif
+ void * alloc_ptr;
};
template <class T>
=== modified file 'storage/ndb/src/kernel/vm/CMakeLists.txt'
--- a/storage/ndb/src/kernel/vm/CMakeLists.txt revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/CMakeLists.txt revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -67,3 +67,13 @@ SET_TARGET_PROPERTIES(mt_thr_config-t
PROPERTIES COMPILE_FLAGS "-DTEST_MT_THR_CONFIG")
TARGET_LINK_LIBRARIES(mt_thr_config-t ndbgeneral)
+ADD_EXECUTABLE(DynArr256-t DynArr256.cpp test_context.cpp)
+SET_TARGET_PROPERTIES(DynArr256-t
+ PROPERTIES COMPILE_FLAGS "-DTAP_TEST")
+TARGET_LINK_LIBRARIES(DynArr256-t ndbkernel ndbsched ndberror
+ ndbtransport
+ ndbmgmcommon
+ ndbmgmapi
+ ndbportlib
+ ndbgeneral)
+
=== modified file 'storage/ndb/src/kernel/vm/DLList.hpp'
--- a/storage/ndb/src/kernel/vm/DLList.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/DLList.hpp revid:mikael.ronstrom@stripped
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2003, 2010, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -21,13 +21,32 @@
#include "ArrayPool.hpp"
/**
- * Template class used for implementing an
- * list of object retreived from a pool
+ * DLMList implements a intrusive list using chaining
+ * (with a double links)
+ *
+ * The entries in the (uninstansiated) meta class passed to the
+ * list must have the following methods:
+ *
+ * -# nextList(U&) returning a reference to the next link
+ * -# prevList(U&) returning a reference to the prev link
*/
-template <typename P, typename T, typename U = T>
-class DLListImpl
+
+template <typename T, typename U = T> struct DLListDefaultMethods {
+static inline Uint32& nextList(U& t) { return t.nextList; }
+static inline Uint32& prevList(U& t) { return t.prevList; }
+};
+
+template <typename P, typename T, typename M = DLListDefaultMethods<T> >
+class DLMList
{
public:
+ explicit DLMList(P& thePool);
+ ~DLMList() { }
+private:
+ DLMList(const DLMList&);
+ DLMList& operator=(const DLMList&);
+
+public:
/**
* List head
*/
@@ -55,8 +74,6 @@ public:
}
};
- DLListImpl(P& thePool);
-
/**
* Allocate an object from pool - update Ptr
*
@@ -169,12 +186,12 @@ protected:
P & thePool;
};
-template <typename P, typename T, typename U = T>
-class LocalDLListImpl : public DLListImpl<P,T,U>
+template <typename P, typename T, typename M = DLListDefaultMethods<T> >
+class LocalDLMList : public DLMList<P, T, M>
{
public:
- LocalDLListImpl(P & thePool, typename DLListImpl<P,T,U>::HeadPOD & _src)
- : DLListImpl<P,T,U>(thePool), src(_src)
+ LocalDLMList(P& thePool, typename DLMList<P, T, M>::HeadPOD& _src)
+ : DLMList<P, T, M>(thePool), src(_src)
{
this->head = src;
#ifdef VM_TRACE
@@ -183,19 +200,20 @@ public:
#endif
}
- ~LocalDLListImpl(){
+ ~LocalDLMList()
+ {
#ifdef VM_TRACE
assert(src.in_use == true);
#endif
src = this->head;
}
private:
- typename DLListImpl<P,T,U>::HeadPOD & src;
+ typename DLMList<P, T, M>::HeadPOD& src;
};
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
-DLListImpl<P,T,U>::DLListImpl(P & _pool)
+DLMList<P, T, M>::DLMList(P& _pool)
: thePool(_pool)
{
// Require user defined constructor on T since we fiddle
@@ -203,9 +221,9 @@ DLListImpl<P,T,U>::DLListImpl(P & _pool)
ASSERT_TYPE_HAS_CONSTRUCTOR(T);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
-DLListImpl<P,T,U>::Head::Head()
+DLMList<P, T, M>::Head::Head()
{
this->init();
}
@@ -215,10 +233,10 @@ DLListImpl<P,T,U>::Head::Head()
*
* Return i
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::seize(Ptr<T> & p)
+DLMList<P, T, M>::seize(Ptr<T>& p)
{
if (likely(thePool.seize(p)))
{
@@ -233,10 +251,10 @@ DLListImpl<P,T,U>::seize(Ptr<T> & p)
*
* Return i
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::seizeId(Ptr<T> & p, Uint32 ir)
+DLMList<P, T, M>::seizeId(Ptr<T>& p, Uint32 ir)
{
if (likely(thePool.seizeId(p, ir)))
{
@@ -246,75 +264,75 @@ DLListImpl<P,T,U>::seizeId(Ptr<T> & p, U
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::findId(Uint32 i) const
+DLMList<P, T, M>::findId(Uint32 i) const
{
return thePool.findId(i);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::add(Ptr<T> & p)
+DLMList<P, T, M>::add(Ptr<T>& p)
{
T * t = p.p;
Uint32 ff = head.firstItem;
- t->U::nextList = ff;
- t->U::prevList = RNIL;
+ M::nextList(*t) = ff;
+ M::prevList(*t) = RNIL;
head.firstItem = p.i;
if(ff != RNIL)
{
T * t2 = thePool.getPtr(ff);
- t2->U::prevList = p.i;
+ M::prevList(*t2) = p.i;
}
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::add(Uint32 first, Ptr<T> & lastPtr)
+DLMList<P, T, M>::add(Uint32 first, Ptr<T>& lastPtr)
{
Uint32 ff = head.firstItem;
head.firstItem = first;
- lastPtr.p->U::nextList = ff;
+ M::nextList(*lastPtr.p) = ff;
if(ff != RNIL)
{
T * t2 = thePool.getPtr(ff);
- t2->U::prevList = lastPtr.i;
+ M::prevList(*t2) = lastPtr.i;
}
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::remove(Ptr<T> & p)
+DLMList<P, T, M>::remove(Ptr<T>& p)
{
remove(p.p);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::remove(T * p)
+DLMList<P, T, M>::remove(T * p)
{
T * t = p;
- Uint32 ni = t->U::nextList;
- Uint32 pi = t->U::prevList;
+ Uint32 ni = M::nextList(*t);
+ Uint32 pi = M::prevList(*t);
if(ni != RNIL){
T * tn = thePool.getPtr(ni);
- tn->U::prevList = pi;
+ M::prevList(*tn) = pi;
}
if(pi != RNIL){
T * tp = thePool.getPtr(pi);
- tp->U::nextList = ni;
+ M::nextList(*tp) = ni;
} else {
head.firstItem = ni;
}
@@ -323,10 +341,10 @@ DLListImpl<P,T,U>::remove(T * p)
/**
* Return an object to pool
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::release(Uint32 i)
+DLMList<P, T, M>::release(Uint32 i)
{
Ptr<T> p;
p.i = i;
@@ -337,60 +355,60 @@ DLListImpl<P,T,U>::release(Uint32 i)
/**
* Return an object to pool
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::release(Ptr<T> & p)
+DLMList<P, T, M>::release(Ptr<T>& p)
{
remove(p);
thePool.release(p);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::release()
+DLMList<P, T, M>::release()
{
Ptr<T> ptr;
Uint32 curr = head.firstItem;
while(curr != RNIL)
{
thePool.getPtr(ptr, curr);
- curr = ptr.p->U::nextList;
+ curr = M::nextList(*ptr.p);
thePool.release(ptr);
}
head.firstItem = RNIL;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::remove()
+DLMList<P, T, M>::remove()
{
head.firstItem = RNIL;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::getPtr(Ptr<T> & p, Uint32 i) const
+DLMList<P, T, M>::getPtr(Ptr<T>& p, Uint32 i) const
{
p.i = i;
p.p = thePool.getPtr(i);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-DLListImpl<P,T,U>::getPtr(Ptr<T> & p) const
+DLMList<P, T, M>::getPtr(Ptr<T>& p) const
{
thePool.getPtr(p);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
T *
-DLListImpl<P,T,U>::getPtr(Uint32 i) const
+DLMList<P, T, M>::getPtr(Uint32 i) const
{
return thePool.getPtr(i);
}
@@ -400,10 +418,10 @@ DLListImpl<P,T,U>::getPtr(Uint32 i) cons
*
* Return i
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::first(Ptr<T> & p) const
+DLMList<P, T, M>::first(Ptr<T>& p) const
{
Uint32 i = head.firstItem;
p.i = i;
@@ -416,12 +434,12 @@ DLListImpl<P,T,U>::first(Ptr<T> & p) con
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::next(Ptr<T> & p) const
+DLMList<P, T, M>::next(Ptr<T>& p) const
{
- Uint32 i = p.p->U::nextList;
+ Uint32 i = M::nextList(*p.p);
p.i = i;
if(i != RNIL){
p.p = thePool.getPtr(i);
@@ -431,28 +449,42 @@ DLListImpl<P,T,U>::next(Ptr<T> & p) cons
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-DLListImpl<P,T,U>::hasNext(const Ptr<T> & p) const
+DLMList<P, T, M>::hasNext(const Ptr<T>& p) const
{
- return p.p->U::nextList != RNIL;
+ return M::nextList(*p.p) != RNIL;
}
// Specializations
-template <typename T, typename U = T>
-class DLList : public DLListImpl<ArrayPool<T>, T, U>
+template <typename P, typename T, typename U = T, typename M = DLListDefaultMethods<T, U> >
+class DLListImpl : public DLMList<P, T, M >
+{
+public:
+ DLListImpl(P& p) : DLMList<P, T, M >(p) {}
+};
+
+template <typename P, typename T, typename U = T, typename M = DLListDefaultMethods<T, U> >
+class LocalDLListImpl : public LocalDLMList<P, T, M > {
+public:
+ LocalDLListImpl(P& p, typename DLMList<P, T, M>::HeadPOD& _src)
+ : LocalDLMList<P, T, M>(p, _src) {}
+};
+
+template <typename T, typename U = T, typename M = DLListDefaultMethods<T, U> >
+class DLList : public DLMList<ArrayPool<T>, T, M >
{
public:
- DLList(ArrayPool<T> & p) : DLListImpl<ArrayPool<T>, T, U>(p) {}
+ DLList(ArrayPool<T>& p) : DLMList<ArrayPool<T>, T, M >(p) {}
};
-template <typename T, typename U = T>
-class LocalDLList : public LocalDLListImpl<ArrayPool<T>, T, U> {
+template <typename T, typename U = T, typename M = DLListDefaultMethods<T, U> >
+class LocalDLList : public LocalDLMList<ArrayPool<T>, T, M > {
public:
- LocalDLList(ArrayPool<T> & p, typename DLList<T,U>::HeadPOD & _src)
- : LocalDLListImpl<ArrayPool<T>, T, U>(p, _src) {}
+ LocalDLList(ArrayPool<T>& p, typename DLList<T, U, M>::HeadPOD& _src)
+ : LocalDLMList<ArrayPool<T>, T, M>(p, _src) {}
};
#endif
=== modified file 'storage/ndb/src/kernel/vm/DynArr256.cpp'
--- a/storage/ndb/src/kernel/vm/DynArr256.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/DynArr256.cpp revid:mikael.ronstrom@oracle.com-20120109124556-sanff2aqtuj8wph0
@@ -637,20 +637,6 @@ DynArr256Pool::release(Uint32 ptrI)
#ifdef UNIT_TEST
-#include <NdbTick.h>
-#include "ndbd_malloc_impl.hpp"
-#include "SimulatedBlock.hpp"
-
-Ndbd_mem_manager mm;
-Configuration cfg;
-Block_context ctx(cfg, mm);
-struct BB : public SimulatedBlock
-{
- BB(int no, Block_context& ctx) : SimulatedBlock(no, ctx) {}
-};
-
-BB block(DBACC, ctx);
-
static
void
simple(DynArr256 & arr, int argc, char* argv[])
@@ -759,7 +745,7 @@ read(DynArr256& arr, int argc, char ** a
Uint32 seed = time(0);
Uint32 seq = 0, seqmask = 0;
- for (Uint32 i = 2; i<argc; i++)
+ for (Uint32 i = 1; i<argc; i++)
{
if (strncmp(argv[i], "--mbytes=", sizeof("--mbytes=")-1) == 0)
{
@@ -831,7 +817,7 @@ write(DynArr256& arr, int argc, char **
Uint64 mbytes = 16*1024;
Uint32 seed = time(0);
- for (Uint32 i = 2; i<argc; i++)
+ for (Uint32 i = 1; i<argc; i++)
{
if (strncmp(argv[i], "--mbytes=", sizeof("--mbytes=")-1) == 0)
{
@@ -888,32 +874,30 @@ write(DynArr256& arr, int argc, char **
}
}
+static
+void
+usage(FILE *f, int argc, char **argv)
+{
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, "\t%s --simple <index1> <index2> ... <indexN>\n", argv[0]);
+ fprintf(stderr, "\t%s --basic\n", argv[0]);
+ fprintf(stderr, "\t%s { --read | --write } [ --mbytes=<megabytes> | --mbytes=<gigabytes>[gG] ] [ --cnt=<count> ] [ --seq ]\n", argv[0]);
+ fprintf(stderr, "defaults:\n");
+ fprintf(stderr, "\t--mbytes=16g\n");
+ fprintf(stderr, "\t--cnt=100000\n");
+}
+
+# include "test_context.hpp"
+
int
main(int argc, char** argv)
{
- if (0)
- {
- for (Uint32 i = 0; i<30; i++)
- {
- Uint32 b = (i + 1) >> 4;
- Uint32 p = i - (b << 4) + b;
- printf("[ %d %d %d ]\n", i, b, p);
- }
- return 0;
+ if (argc == 1) {
+ usage(stderr, argc, argv);
+ exit(2);
}
- Pool_context pc;
- pc.m_block = █
-
- Resource_limit rl;
- rl.m_min = 0;
- rl.m_max = 10000;
- rl.m_resource_id = 0;
- mm.set_resource_limit(rl);
- if(!mm.init())
- {
- abort();
- }
+ Pool_context pc = test_context(10000 /* pages */);
DynArr256Pool pool;
pool.init(0x2001, pc);
@@ -922,13 +906,18 @@ main(int argc, char** argv)
DynArr256 arr(pool, head);
if (strcmp(argv[1], "--simple") == 0)
- simple(arr, argc, argv);
+ simple(arr, argc - 1, argv + 1);
else if (strcmp(argv[1], "--basic") == 0)
- basic(arr, argc, argv);
+ basic(arr, argc - 1, argv + 1);
else if (strcmp(argv[1], "--read") == 0)
- read(arr, argc, argv);
+ read(arr, argc - 1, argv + 1);
else if (strcmp(argv[1], "--write") == 0)
- write(arr, argc, argv);
+ write(arr, argc - 1, argv + 1);
+ else
+ {
+ usage(stderr, argc, argv);
+ exit(2);
+ }
DynArr256::ReleaseIterator iter;
arr.init(iter);
@@ -943,75 +932,20 @@ main(int argc, char** argv)
cnt);
return 0;
-#if 0
- printf("sizeof(DA256Page): %d\n", sizeof(DA256Page));
-
- DA256Page page;
-
- for (Uint32 i = 0; i<10000; i++)
- {
- Uint32 arg = rand() & 255;
- Uint32 base = 0;
- Uint32 idx = arg & 256;
- printf("%d\n", arg);
-
- assert(base <= 30);
-
- if (idx == 255)
- {
- Uint32 b = (base + 1) >> 4;
- Uint32 p = base - (b << 4) + b;
- Uint32 magic = page.m_header[b].m_magic;
- Uint32 retVal = page.m_header[b].m_data[p];
-
- require(magic & (1 << p));
- return retVal;
- }
- else
- {
- // 4 bit extra offset per idx
- Uint32 line = idx / 15;
- Uint32 off = idx % 15;
-
- {
- Uint32 pos = 1 + idx + line;
- Uint32 magic = pos & ~15;
-
- Uint32 * ptr = (Uint32*)&page.m_nodes[base];
- assert((ptr + pos) == &page.m_nodes[base].m_lines[line].m_data[off]);
- assert((ptr + magic) == &page.m_nodes[base].m_lines[line].m_magic);
- }
- }
- }
-#endif
-}
-
-Uint32 g_currentStartPhase;
-Uint32 g_start_type;
-NdbNodeBitmask g_nowait_nodes;
-
-void
-UpgradeStartup::sendCmAppChg(Ndbcntr& cntr, Signal* signal, Uint32 startLevel){
}
-void
-UpgradeStartup::execCM_APPCHG(SimulatedBlock & block, Signal* signal){
-}
-
-void
-UpgradeStartup::sendCntrMasterReq(Ndbcntr& cntr, Signal* signal, Uint32 n){
-}
-
-void
-UpgradeStartup::execCNTR_MASTER_REPLY(SimulatedBlock & block, Signal* signal){
-}
+#endif
-#include <SimBlockList.hpp>
+#ifdef TAP_TEST
+#include <NdbTap.hpp>
+#include "test_context.hpp"
-void
-SimBlockList::unload()
+TAPTEST(DynArr256)
{
+ Pool_context pc = test_context(100);
-}
+ OK(true);
+ return 1;
+}
#endif
=== modified file 'storage/ndb/src/kernel/vm/SLList.hpp'
--- a/storage/ndb/src/kernel/vm/SLList.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/SLList.hpp revid:mikael.ronstrom@stripped20120109124556-sanff2aqtuj8wph0
@@ -1,6 +1,5 @@
/*
- Copyright (C) 2003-2006 MySQL AB
- All rights reserved. Use is subject to license terms.
+ Copyright (C) 2003-2006, 2011 Oracle and/or its affiliates. All rights reserved.
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
@@ -23,13 +22,30 @@
#include <NdbOut.hpp>
/**
- * Template class used for implementing an
- * list of object retreived from a pool
+ * SLMList implements a intrusive list using chaining
+ * (with a single link)
+ *
+ * The entries in the (uninstansiated) meta class passed to the
+ * list must have the following methods:
+ *
+ * -# nextList(U&) returning a reference to the next link
*/
-template <typename P, typename T, typename U = T>
-class SLListImpl
+
+template <typename T, typename U = T> struct SLListDefaultMethods {
+static inline Uint32& nextList(U& t) { return t.nextList; }
+};
+
+template <typename P, typename T, typename M = SLListDefaultMethods<T> >
+class SLMList
{
public:
+ explicit SLMList(P& thePool);
+ ~SLMList() { }
+private:
+ SLMList(const SLMList&);
+ SLMList& operator=(const SLMList&);
+
+public:
/**
* List head
*/
@@ -46,8 +62,6 @@ public:
}
};
- SLListImpl(P & thePool);
-
/**
* Allocate an object from pool - update Ptr
*
@@ -119,7 +133,7 @@ public:
* Add
*/
void add(Ptr<T> & p){
- p.p->U::nextList = head.firstItem;
+ M::nextList(*p.p) = head.firstItem;
head.firstItem = p.i;
}
@@ -142,7 +156,7 @@ public:
while(i != RNIL){
c++;
const T * t = thePool.getPtr(i);
- i = t->U::nextList;
+ i = M::nextList(*t);
}
return c;
}
@@ -168,75 +182,75 @@ protected:
P & thePool;
};
-template <typename P, typename T, typename U = T>
-class LocalSLListImpl : public SLListImpl<P, T, U>
+template <typename P, typename T, typename M = SLListDefaultMethods<T> >
+class LocalSLMList : public SLMList<P, T, M>
{
public:
- LocalSLListImpl(P & thePool, typename SLListImpl<P, T, U>::HeadPOD & _src)
- : SLListImpl<P, T, U>(thePool), src(_src)
+ LocalSLMList(P& thePool, typename SLMList<P, T, M>::HeadPOD& _src)
+ : SLMList<P, T, M>(thePool), src(_src)
{
this->head = src;
}
- ~LocalSLListImpl(){
+ ~LocalSLMList(){
src = this->head;
}
private:
- typename SLListImpl<P, T, U>::HeadPOD & src;
+ typename SLMList<P, T, M>::HeadPOD& src;
};
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
-SLListImpl<P, T, U>::SLListImpl(P & _pool):
+SLMList<P, T, M>::SLMList(P& _pool):
thePool(_pool)
{
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
-SLListImpl<P, T, U>::Head::Head()
+SLMList<P, T, M>::Head::Head()
{
this->init();
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::seize(Ptr<T> & p)
+SLMList<P, T, M>::seize(Ptr<T>& p)
{
thePool.seize(p);
T * t = p.p;
Uint32 ff = head.firstItem;
if(p.i != RNIL)
{
- t->U::nextList = ff;
+ M::nextList(*t) = ff;
head.firstItem = p.i;
return true;
}
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::seizeId(Ptr<T> & p, Uint32 ir)
+SLMList<P, T, M>::seizeId(Ptr<T>& p, Uint32 ir)
{
thePool.seizeId(p, ir);
T * t = p.p;
Uint32 ff = head.firstItem;
if(p.i != RNIL)
{
- t->U::nextList = ff;
+ M::nextList(*t) = ff;
head.firstItem = p.i;
return true;
}
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::seizeN(Ptr<T> & p, Uint32 n)
+SLMList<P, T, M>::seizeN(Ptr<T>& p, Uint32 n)
{
for(Uint32 i = 0; i < n; i++)
{
@@ -249,7 +263,7 @@ SLListImpl<P, T, U>::seizeN(Ptr<T> & p,
{
p.i = head.firstItem;
thePool.getPtr(p);
- head.firstItem = p.p->U::nextList;
+ head.firstItem = M::nextList(*p.p);
thePool.release(p);
}
return false;
@@ -266,75 +280,75 @@ SLListImpl<P, T, U>::seizeN(Ptr<T> & p,
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-SLListImpl<P, T, U>::remove()
+SLMList<P, T, M>::remove()
{
head.firstItem = RNIL;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::remove_front(Ptr<T> & p)
+SLMList<P, T, M>::remove_front(Ptr<T>& p)
{
p.i = head.firstItem;
if (p.i != RNIL)
{
p.p = thePool.getPtr(p.i);
- head.firstItem = p.p->U::nextList;
+ head.firstItem = M::nextList(*p.p);
return true;
}
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-SLListImpl<P, T, U>::add(Uint32 first, Ptr<T> & last)
+SLMList<P, T, M>::add(Uint32 first, Ptr<T>& last)
{
- last.p->U::nextList = head.firstItem;
+ M::nextList(*last.p) = head.firstItem;
head.firstItem = first;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-SLListImpl<P, T, U>::release()
+SLMList<P, T, M>::release()
{
Ptr<T> ptr;
Uint32 curr = head.firstItem;
while(curr != RNIL)
{
thePool.getPtr(ptr, curr);
- curr = ptr.p->U::nextList;
+ curr = M::nextList(*ptr.p);
thePool.release(ptr);
}
head.firstItem = RNIL;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-SLListImpl<P, T, U>::getPtr(Ptr<T> & p, Uint32 i) const
+SLMList<P, T, M>::getPtr(Ptr<T>& p, Uint32 i) const
{
p.i = i;
p.p = thePool.getPtr(i);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
void
-SLListImpl<P, T, U>::getPtr(Ptr<T> & p) const
+SLMList<P, T, M>::getPtr(Ptr<T>& p) const
{
thePool.getPtr(p);
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
T *
-SLListImpl<P, T, U>::getPtr(Uint32 i) const
+SLMList<P, T, M>::getPtr(Uint32 i) const
{
return thePool.getPtr(i);
}
@@ -344,10 +358,10 @@ SLListImpl<P, T, U>::getPtr(Uint32 i) co
*
* Return i
*/
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::first(Ptr<T> & p) const
+SLMList<P, T, M>::first(Ptr<T>& p) const
{
Uint32 i = head.firstItem;
p.i = i;
@@ -360,12 +374,12 @@ SLListImpl<P, T, U>::first(Ptr<T> & p) c
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::next(Ptr<T> & p) const
+SLMList<P, T, M>::next(Ptr<T>& p) const
{
- Uint32 i = p.p->U::nextList;
+ Uint32 i = M::nextList(*p.p);
p.i = i;
if(i != RNIL)
{
@@ -376,28 +390,44 @@ SLListImpl<P, T, U>::next(Ptr<T> & p) co
return false;
}
-template <typename P, typename T, typename U>
+template <typename P, typename T, typename M>
inline
bool
-SLListImpl<P, T, U>::hasNext(const Ptr<T> & p) const
+SLMList<P, T, M>::hasNext(const Ptr<T>& p) const
{
- return p.p->U::nextList != RNIL;
+ return M::nextList(*p.p) != RNIL;
}
// Specializations
-template <typename T, typename U = T>
-class SLList : public SLListImpl<ArrayPool<T>, T, U>
+template <typename P, typename T, typename U = T, typename M = SLListDefaultMethods<T, U> >
+class SLListImpl : public SLMList<P, T, M>
+{
+public:
+ SLListImpl(P& p) : SLMList<P, T, M>(p) {}
+};
+
+template <typename P, typename T, typename U = T, typename M = SLListDefaultMethods<T, U> >
+class LocalSLListImpl : public LocalSLMList<P, T, M> {
+public:
+ LocalSLListImpl(P& p, typename SLMList<P, T, M>::Head& _src)
+ : LocalSLMList<P, T, M>(p, _src) {}
+};
+
+//
+
+template <typename T, typename U = T, typename M = SLListDefaultMethods<T, U> >
+class SLList : public SLMList<ArrayPool<T>, T, M>
{
public:
- SLList(ArrayPool<T> & p) : SLListImpl<ArrayPool<T>, T, U>(p) {}
+ SLList(ArrayPool<T>& p) : SLMList<ArrayPool<T>, T, M>(p) {}
};
-template <typename T, typename U = T>
-class LocalSLList : public LocalSLListImpl<ArrayPool<T>,T,U> {
+template <typename T, typename U = T, typename M = SLListDefaultMethods<T, U> >
+class LocalSLList : public LocalSLMList<ArrayPool<T>, T, M> {
public:
- LocalSLList(ArrayPool<T> & p, typename SLList<T,U>::Head & _src)
- : LocalSLListImpl<ArrayPool<T>,T,U>(p, _src) {}
+ LocalSLList(ArrayPool<T>& p, typename SLMList<ArrayPool<T>, T, M>::Head& _src)
+ : LocalSLMList<ArrayPool<T>, T, M>(p, _src) {}
};
=== modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.hpp'
--- a/storage/ndb/src/kernel/vm/SimulatedBlock.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/SimulatedBlock.hpp revid:mikael.ronstrom@stripped
@@ -636,9 +636,9 @@ private:
*/
protected:
enum { MaxInstances = 3 +
- MAX_NDBMT_TC_THREADS +
- MAX_NDBMT_LQH_WORKERS +
- MAX_NDBMT_RECEIVE_THREADS };
+ MAX_NDBMT_TC_THREADS +
+ MAX_NDBMT_LQH_WORKERS +
+ MAX_NDBMT_RECEIVE_THREADS };
private:
SimulatedBlock** theInstanceList; // set in main, indexed by instance
SimulatedBlock* theMainInstance; // set in all
=== modified file 'storage/ndb/src/kernel/vm/TransporterCallback.cpp'
--- a/storage/ndb/src/kernel/vm/TransporterCallback.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/TransporterCallback.cpp revid:mikael.ronstrom@stripped124556-sanff2aqtuj8wph0
@@ -114,19 +114,18 @@ TransporterRegistry globalTransporterReg
#endif
#ifdef NDBD_MULTITHREADED
-struct ReceiverThreadCache
+static struct ReceiverThreadCache
{
SectionSegmentPool::Cache cache_instance;
- char not_used[96];
-};
-static ReceiverThreadCache rec_cache[MAX_NDBMT_RECEIVE_THREADS];
+ char pad[64 - sizeof(SectionSegmentPool::Cache)];
+} g_receiver_thread_cache[MAX_NDBMT_RECEIVE_THREADS];
void
-init_receiver_cache()
+mt_init_receiver_cache()
{
- for (Uint32 i = 0; i < MAX_NDBMT_RECEIVE_THREADS; i++)
+ for (unsigned i = 0; i < NDB_ARRAY_SIZE(g_receiver_thread_cache); i++)
{
- rec_cache[i].cache_instance.init_cache(1024,1024);
+ g_receiver_thread_cache[i].cache_instance.init_cache(1024,1024);
}
}
@@ -137,6 +136,7 @@ mt_set_section_chunk_size()
}
#else
+void mt_init_receiver_cache(){}
void mt_set_section_chunk_size(){}
void init_receiver_cache(){}
#endif
@@ -151,8 +151,9 @@ TransporterCallbackKernel::deliver_signa
{
#ifdef NDBD_MULTITHREADED
assert(recvThreadId < MAX_NDBMT_RECEIVE_THREADS);
- SectionSegmentPool::Cache &cache = rec_cache[recvThreadId].cache_instance;
+ SectionSegmentPool::Cache & cache = g_receiver_thread_cache[recvThreadId].cache_instance;
#endif
+
const Uint32 secCount = header->m_noOfSections;
const Uint32 length = header->theLength;
=== modified file 'storage/ndb/src/kernel/vm/TransporterCallbackKernel.hpp'
--- a/storage/ndb/src/kernel/vm/TransporterCallbackKernel.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/TransporterCallbackKernel.hpp revid:mikael.ronstrom@stripped4556-sanff2aqtuj8wph0
@@ -13,8 +13,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-void init_receiver_cache();
-
class TransporterCallbackKernel: public TransporterCallback
{
public:
=== modified file 'storage/ndb/src/kernel/vm/mt.cpp'
--- a/storage/ndb/src/kernel/vm/mt.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/mt.cpp revid:mikael.ronstrom@stripped109124556-sanff2aqtuj8wph0
@@ -74,16 +74,16 @@ static const Uint32 MAX_SIGNALS_BEFORE_W
#define NUM_MAIN_THREADS 2 // except receiver
/*
-MAX_BLOCK_THREADS need not include the send threads since it's
-used to set size of arrays used by all threads that contains a
-job buffer and executes signals. The send threads only sends
-messages directed to other nodes and contains no blocks and
-executes thus no signals.
+ MAX_BLOCK_THREADS need not include the send threads since it's
+ used to set size of arrays used by all threads that contains a
+ job buffer and executes signals. The send threads only sends
+ messages directed to other nodes and contains no blocks and
+ executes thus no signals.
*/
#define MAX_BLOCK_THREADS (NUM_MAIN_THREADS + \
- MAX_NDBMT_LQH_THREADS + \
- MAX_NDBMT_TC_THREADS + \
- MAX_NDBMT_RECEIVE_THREADS)
+ MAX_NDBMT_LQH_THREADS + \
+ MAX_NDBMT_TC_THREADS + \
+ MAX_NDBMT_RECEIVE_THREADS)
#define MAX_BLOCK_INSTANCES (MAX_BLOCK_THREADS+1)
/* If this is too small it crashes before first signal. */
@@ -3989,7 +3989,7 @@ rep_init(struct thr_repository* rep, uns
NdbMutex_Init(&rep->stop_for_crash_mutex);
NdbCondition_Init(&rep->stop_for_crash_cond);
- for (Uint32 i = 0; i < globalData.ndbMtReceiveThreads; i++)
+ for (Uint32 i = 0; i < NDB_ARRAY_SIZE(rep->m_receive_lock); i++)
{
receive_lock_init(i, rep);
}
@@ -4109,7 +4109,6 @@ ThreadConfig::ipControlLoop(NdbThread* p
g_send_threads = new thr_send_threads();
#endif
setcpuaffinity(rep);
- init_receiver_cache();
/* Start the send thread(s) */
if (g_send_threads)
=== modified file 'storage/ndb/src/kernel/vm/mt_thr_config.cpp'
--- a/storage/ndb/src/kernel/vm/mt_thr_config.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/mt_thr_config.cpp revid:mikael.ronstrom@stripped
@@ -31,10 +31,10 @@ static const struct THRConfig::Entries m
{ "main", THRConfig::T_MAIN, 1, 1 },
{ "ldm", THRConfig::T_LDM, 1, MAX_NDBMT_LQH_THREADS },
{ "recv", THRConfig::T_RECV, 1, MAX_NDBMT_RECEIVE_THREADS },
- { "send", THRConfig::T_SEND, 0, MAX_NDBMT_SEND_THREADS },
{ "rep", THRConfig::T_REP, 1, 1 },
{ "io", THRConfig::T_IO, 1, 1 },
- { "tc", THRConfig::T_TC, 0, MAX_NDBMT_TC_THREADS }
+ { "tc", THRConfig::T_TC, 0, MAX_NDBMT_TC_THREADS },
+ { "send", THRConfig::T_SEND, 0, MAX_NDBMT_SEND_THREADS }
};
static const struct THRConfig::Param m_params[] =
@@ -377,6 +377,10 @@ THRConfig::do_parse(unsigned MaxNoOfExec
add(T_MAIN); /* Global */
add(T_REP); /* Local, main consumer is SUMA */
+ for(Uint32 i = 0; i < recvthreads; i++)
+ {
+ add(T_RECV);
+ }
add(T_IO);
for(Uint32 i = 0; i < lqhthreads; i++)
{
@@ -390,10 +394,6 @@ THRConfig::do_parse(unsigned MaxNoOfExec
{
add(T_SEND);
}
- for(Uint32 i = 0; i < recvthreads; i++)
- {
- add(T_RECV);
- }
// If we have set TC-threads...we say that this is "new" code
// and give error for having too few CPU's in mask compared to #threads
@@ -1108,7 +1108,11 @@ THRConfig::do_parse(const char * ThreadC
add((T_Type)i);
}
- const bool allow_too_few_cpus = m_threads[T_TC].size() == 0;
+ const bool allow_too_few_cpus =
+ m_threads[T_TC].size() == 0 &&
+ m_threads[T_SEND].size() == 0 &&
+ m_threads[T_RECV].size() == 1;
+
int res = do_bindings(allow_too_few_cpus);
if (res != 0)
{
=== modified file 'storage/ndb/src/kernel/vm/mt_thr_config.hpp'
--- a/storage/ndb/src/kernel/vm/mt_thr_config.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/kernel/vm/mt_thr_config.hpp revid:mikael.ronstrom@stripped-sanff2aqtuj8wph0
@@ -41,10 +41,10 @@ public:
T_MAIN = 0, /* DIH/QMGR/TC/SPJ etc */
T_LDM = 1, /* LQH/ACC/TUP/TUX etc */
T_RECV = 2, /* CMVMI */
- T_SEND = 3, /* No blocks */
- T_REP = 4, /* SUMA */
- T_IO = 5, /* FS, SocketServer etc */
- T_TC = 6, /* TC+SPJ */
+ T_REP = 3, /* SUMA */
+ T_IO = 4, /* FS, SocketServer etc */
+ T_TC = 5, /* TC+SPJ */
+ T_SEND = 6, /* No blocks */
T_END = 7
};
=== added file 'storage/ndb/src/kernel/vm/test_context.cpp'
--- a/storage/ndb/src/kernel/vm/test_context.cpp 1970-01-01 00:00:00 +0000
+++ b/storage/ndb/src/kernel/vm/test_context.cpp revid:mikael.ronstrom@stripped20120109124556-sanff2aqtuj8wph0
@@ -0,0 +1,104 @@
+/*
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ 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
+*/
+
+#include "blocks/dbdih/Dbdih.hpp"
+#include "GlobalData.hpp"
+#include "ndbapi/NdbApi.hpp"
+#include "ndbd_malloc_impl.hpp"
+#include "NdbTick.h"
+#include "SimBlockList.hpp"
+#include "SimulatedBlock.hpp"
+#include "test_context.hpp"
+
+struct DummyBlock : public SimulatedBlock
+{
+ DummyBlock(int no, Block_context& ctx) : SimulatedBlock(no, ctx) {}
+ ~DummyBlock() { }
+};
+
+static Ndbd_mem_manager mm;
+static Configuration cfg;
+static Block_context ctx(cfg, mm);
+static DummyBlock block(DBACC, ctx);
+
+// Force enough modules from libkernel that libsched need
+static SimulatedBlock::MutexManager mxm(block);
+static SafeCounterManager scm(block);
+
+Pool_context
+test_context(Uint32 pages)
+{
+ ndb_init();
+
+ Pool_context pc;
+ pc.m_block = █
+
+ Resource_limit rl;
+ for (Uint32 resid = 1; resid < RG_COUNT; resid++)
+ {
+ rl.m_min = 0;
+ rl.m_max = 0;
+ rl.m_resource_id = resid;
+ mm.set_resource_limit(rl);
+ }
+ rl.m_min = 0;
+ rl.m_max = pages;
+ rl.m_resource_id = 0;
+ mm.set_resource_limit(rl);
+
+ if (!mm.init(NULL /* watchCounter */))
+ {
+ abort();
+ }
+
+ mm.map(NULL /* watchCounter */, 0 /* memlock */); // Map all
+
+ return pc;
+}
+
+void dummy_calls_to_force_some_modules_from_libkernel_needed_by_libsched()
+{
+ globalData.getBlock(0,0);
+ Ndbinfo::getNumTables();
+}
+
+// Some undefined globals needed
+
+Uint32 g_currentStartPhase;
+Uint32 g_start_type;
+NdbNodeBitmask g_nowait_nodes;
+
+void
+SimBlockList::unload()
+{
+
+}
+
+void
+NdbShutdown(int error_code,
+ NdbShutdownType type,
+ NdbRestartType restartType)
+{
+ abort();
+}
+
+Uint32
+Dbdih::dihGetInstanceKey(Uint32 tabId, Uint32 fragId)
+{
+ abort();
+ return 0;
+}
=== added file 'storage/ndb/src/kernel/vm/test_context.hpp'
--- a/storage/ndb/src/kernel/vm/test_context.hpp 1970-01-01 00:00:00 +0000
+++ b/storage/ndb/src/kernel/vm/test_context.hpp revid:mikael.ronstrom@stripped
@@ -0,0 +1,25 @@
+# ifndef TESTBLOCK_HPP
+# define TESTBLOCK_HPP
+
+/*
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+
+ 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
+*/
+
+#include "Pool.hpp"
+
+Pool_context test_context(Uint32 pages);
+
+# endif
=== modified file 'storage/ndb/src/ndbjtie/ndbapi_jtie.hpp'
--- a/storage/ndb/src/ndbjtie/ndbapi_jtie.hpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/src/ndbjtie/ndbapi_jtie.hpp revid:mikael.ronstrom@stripped120109124556-sanff2aqtuj8wph0
@@ -1623,9 +1623,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;)Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/Column;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Column_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv * env, jclass cls, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Column_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv * env, jclass cls, jobject p0)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Column_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv *, jclass, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Column_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv *, jclass, jobject)");
return gcreate< ttrait_c_m_n_n_NdbDictionary_Column_r, ttrait_c_m_n_n_NdbDictionary_Column_cr >(env, cls, p0);
}
@@ -2015,9 +2015,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/DatafileConst;)Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/Datafile;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_DatafileConst_2(JNIEnv * env, jclass cls, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024DatafileConst_2(JNIEnv * env, jclass cls, jobject p0)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_DatafileConst_2(JNIEnv *, jclass, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024DatafileConst_2(JNIEnv *, jclass, jobject)");
return gcreate< ttrait_c_m_n_n_NdbDictionary_Datafile_r, ttrait_c_m_n_n_NdbDictionary_Datafile_cr >(env, cls, p0);
}
@@ -2087,9 +2087,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/TablespaceConst;)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_setTablespace__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TablespaceConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_setTablespace__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TablespaceConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_setTablespace__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TablespaceConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Datafile_setTablespace__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TablespaceConst_2(JNIEnv *, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Datafile_t, ttrait_int, ttrait_c_m_n_n_NdbDictionary_Tablespace_cr, &NdbDictionary::Datafile::setTablespace >(env, obj, p0);
#else
@@ -2299,9 +2299,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/Table;)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_dropTable__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_Table_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_dropTable__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024Table_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_dropTable__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_Table_2(JNIEnv *, jobject, jobject)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_dropTable__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024Table_2(JNIEnv *, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_int, ttrait_c_m_n_n_NdbDictionary_Table_r, &NdbDictionary::Dictionary::dropTable >(env, obj, p0);
#else
@@ -2379,9 +2379,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/IndexConst;Z)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Z(JNIEnv * env, jobject obj, jobject p0, jboolean p1)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Z(JNIEnv * env, jobject obj, jobject p0, jboolean p1)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Z(JNIEnv *, jobject, jobject, jboolean)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Z(JNIEnv *, jobject, jobject, jboolean)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_int, ttrait_c_m_n_n_NdbDictionary_Index_cr, ttrait_bool, &NdbDictionary::Dictionary::createIndex >(env, obj, p0, p1);
#else
@@ -2395,9 +2395,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/IndexConst;Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/TableConst;Z)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Z(JNIEnv * env, jobject obj, jobject p0, jobject p1, jboolean p2)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Z(JNIEnv * env, jobject obj, jobject p0, jobject p1, jboolean p2)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Z(JNIEnv *, jobject, jobject, jobject, jboolean)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createIndex__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Z(JNIEnv *, jobject, jobject, jobject, jboolean)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_int, ttrait_c_m_n_n_NdbDictionary_Index_cr, ttrait_c_m_n_n_NdbDictionary_Table_cr, ttrait_bool, &NdbDictionary::Dictionary::createIndex >(env, obj, p0, p1, p2);
#else
@@ -2555,9 +2555,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/TableConst;Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/RecordSpecificationConstArray;III)Lcom/mysql/ndbjtie/ndbapi/NdbRecord;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jint p2, jint p3, jint p4)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jint p2, jint p3, jint p4)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jint, jint, jint)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jint, jint, jint)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_c_m_n_n_NdbRecord_p, ttrait_c_m_n_n_NdbDictionary_Table_cp, ttrait_c_m_n_n_NdbDictionary_RecordSpecificationArray_cp, ttrait_Uint32, ttrait_Uint32, ttrait_Uint32, &NdbDictionary::Dictionary::createRecord >(env, obj, p0, p1, p2, p3, p4);
#else
@@ -2571,9 +2571,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/IndexConst;Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/TableConst;Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/RecordSpecificationConstArray;III)Lcom/mysql/ndbjtie/ndbapi/NdbRecord;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jobject p2, jint p3, jint p4, jint p5)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jobject p2, jint p3, jint p4, jint p5)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jobject, jint, jint, jint)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TableConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jobject, jint, jint, jint)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_c_m_n_n_NdbRecord_p, ttrait_c_m_n_n_NdbDictionary_Index_cp, ttrait_c_m_n_n_NdbDictionary_Table_cp, ttrait_c_m_n_n_NdbDictionary_RecordSpecificationArray_cp, ttrait_Uint32, ttrait_Uint32, ttrait_Uint32, &NdbDictionary::Dictionary::createRecord >(env, obj, p0, p1, p2, p3, p4, p5);
#else
@@ -2587,9 +2587,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/IndexConst;Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/RecordSpecificationConstArray;III)Lcom/mysql/ndbjtie/ndbapi/NdbRecord;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jint p2, jint p3, jint p4)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv * env, jobject obj, jobject p0, jobject p1, jint p2, jint p3, jint p4)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jint, jint, jint)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Dictionary_createRecord__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024IndexConst_2Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecificationConstArray_2III(JNIEnv *, jobject, jobject, jobject, jint, jint, jint)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbDictionary_Dictionary_t, ttrait_c_m_n_n_NdbRecord_p, ttrait_c_m_n_n_NdbDictionary_Index_cp, ttrait_c_m_n_n_NdbDictionary_RecordSpecificationArray_cp, ttrait_Uint32, ttrait_Uint32, ttrait_Uint32, &NdbDictionary::Dictionary::createRecord >(env, obj, p0, p1, p2, p3, p4);
#else
@@ -3769,9 +3769,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/LogfileGroupConst;)Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/LogfileGroup;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroup_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv * env, jclass cls, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroup_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv * env, jclass cls, jobject p0)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroup_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv *, jclass, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroup_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv *, jclass, jobject)");
return gcreate< ttrait_c_m_n_n_NdbDictionary_LogfileGroup_r, ttrait_c_m_n_n_NdbDictionary_LogfileGroup_cr >(env, cls, p0);
}
@@ -4105,9 +4105,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecification_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecification_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecification_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024RecordSpecification_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbDictionary_RecordSpecification_t, ttrait_c_m_n_n_NdbDictionary_Column_cp, &NdbDictionary::RecordSpecification::column >(env, obj, p0);
}
@@ -5345,9 +5345,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/TablespaceConst;)Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/Tablespace;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TablespaceConst_2(JNIEnv * env, jclass cls, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TablespaceConst_2(JNIEnv * env, jclass cls, jobject p0)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_TablespaceConst_2(JNIEnv *, jclass, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024TablespaceConst_2(JNIEnv *, jclass, jobject)");
return gcreate< ttrait_c_m_n_n_NdbDictionary_Tablespace_r, ttrait_c_m_n_n_NdbDictionary_Tablespace_cr >(env, cls, p0);
}
@@ -5433,9 +5433,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/LogfileGroupConst;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_setDefaultLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_setDefaultLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_setDefaultLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Tablespace_setDefaultLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv *, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
gcall_mfv< ttrait_c_m_n_n_NdbDictionary_Tablespace_t, ttrait_c_m_n_n_NdbDictionary_LogfileGroup_cr, &NdbDictionary::Tablespace::setDefaultLogfileGroup >(env, obj, p0);
#else
@@ -5577,9 +5577,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/UndofileConst;)Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/Undofile;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_UndofileConst_2(JNIEnv * env, jclass cls, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024UndofileConst_2(JNIEnv * env, jclass cls, jobject p0)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_UndofileConst_2(JNIEnv *, jclass, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_create__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024UndofileConst_2(JNIEnv *, jclass, jobject)");
return gcreate< ttrait_c_m_n_n_NdbDictionary_Undofile_r, ttrait_c_m_n_n_NdbDictionary_Undofile_cr >(env, cls, p0);
}
@@ -5649,9 +5649,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbDiction
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/LogfileGroupConst;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_setLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_setLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_setLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_LogfileGroupConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbDictionary_00024Undofile_setLogfileGroup__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024LogfileGroupConst_2(JNIEnv *, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
gcall_mfv< ttrait_c_m_n_n_NdbDictionary_Undofile_t, ttrait_c_m_n_n_NdbDictionary_LogfileGroup_cr, &NdbDictionary::Undofile::setLogfileGroup >(env, obj, p0);
#else
@@ -6281,9 +6281,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbIndexSc
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbRecordConst;Lcom/mysql/ndbjtie/ndbapi/NdbIndexScanOperation/IndexBoundConst;)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_setBound__Lcom_mysql_ndbjtie_ndbapi_NdbRecordConst_2Lcom_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_IndexBoundConst_2(JNIEnv * env, jobject obj, jobject p0, jobject p1)
+Java_com_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_setBound__Lcom_mysql_ndbjtie_ndbapi_NdbRecordConst_2Lcom_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_00024IndexBoundConst_2(JNIEnv * env, jobject obj, jobject p0, jobject p1)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_setBound__Lcom_mysql_ndbjtie_ndbapi_NdbRecordConst_2Lcom_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_IndexBoundConst_2(JNIEnv *, jobject, jobject, jobject)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_setBound__Lcom_mysql_ndbjtie_ndbapi_NdbRecordConst_2Lcom_mysql_ndbjtie_ndbapi_NdbIndexScanOperation_00024IndexBoundConst_2(JNIEnv *, jobject, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbIndexScanOperation_t, ttrait_int, ttrait_c_m_n_n_NdbRecord_cp, ttrait_c_m_n_n_NdbIndexScanOperation_IndexBound_cr, &NdbIndexScanOperation::setBound >(env, obj, p0, p1);
#else
@@ -6649,9 +6649,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbInterpr
* Signature: (ILcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_read_1attr__ILcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv * env, jobject obj, jint p0, jobject p1)
+Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_read_1attr__ILcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv * env, jobject obj, jint p0, jobject p1)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_read_1attr__ILcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv *, jobject, jint, jobject)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_read_1attr__ILcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv *, jobject, jint, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbInterpretedCode_t, ttrait_int, ttrait_Uint32, ttrait_c_m_n_n_NdbDictionary_Column_cp, &NdbInterpretedCode::read_attr >(env, obj, p0, p1);
#else
@@ -6681,9 +6681,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbInterpr
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;I)I
*/
JNIEXPORT jint JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_write_1attr__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2I(JNIEnv * env, jobject obj, jobject p0, jint p1)
+Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_write_1attr__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2I(JNIEnv * env, jobject obj, jobject p0, jint p1)
{
- TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_write_1attr__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2I(JNIEnv *, jobject, jobject, jint)");
+ TRACE("jint Java_com_mysql_ndbjtie_ndbapi_NdbInterpretedCode_write_1attr__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2I(JNIEnv *, jobject, jobject, jint)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbInterpretedCode_t, ttrait_int, ttrait_c_m_n_n_NdbDictionary_Column_cp, ttrait_Uint32, &NdbInterpretedCode::write_attr >(env, obj, p0, p1);
#else
@@ -7644,9 +7644,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbOperati
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;Ljava/nio/ByteBuffer;)Lcom/mysql/ndbjtie/ndbapi/NdbRecAttr;
*/
JNIEXPORT jobject JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbOperation_getValue__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2Ljava_nio_ByteBuffer_2(JNIEnv * env, jobject obj, jobject p0, jobject p1)
+Java_com_mysql_ndbjtie_ndbapi_NdbOperation_getValue__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2Ljava_nio_ByteBuffer_2(JNIEnv * env, jobject obj, jobject p0, jobject p1)
{
- TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbOperation_getValue__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2Ljava_nio_ByteBuffer_2(JNIEnv *, jobject, jobject, jobject)");
+ TRACE("jobject Java_com_mysql_ndbjtie_ndbapi_NdbOperation_getValue__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2Ljava_nio_ByteBuffer_2(JNIEnv *, jobject, jobject, jobject)");
#ifndef NDBJTIE_USE_WRAPPED_VARIANT_FOR_FUNCTION
return gcall_mfr< ttrait_c_m_n_n_NdbOperation_t, ttrait_c_m_n_n_NdbRecAttr_p, ttrait_c_m_n_n_NdbDictionary_Column_cp, ttrait_char_1p_bb, &NdbOperation::getValue >(env, obj, p0, p1);
#else
@@ -7896,9 +7896,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbOperati
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbOperation_GetValueSpec_t, ttrait_c_m_n_n_NdbDictionary_Column_cp, &NdbOperation::GetValueSpec::column >(env, obj, p0);
}
@@ -8120,9 +8120,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbOperati
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbOperation/GetValueSpecArray;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_GetValueSpecArray_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpecArray_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_GetValueSpecArray_2(JNIEnv *, jobject, jobject)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpecArray_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbOperation_OperationOptions_t, ttrait_c_m_n_n_NdbOperation_GetValueSpecArray_p, &NdbOperation::OperationOptions::extraGetValues >(env, obj, p0);
}
@@ -8144,9 +8144,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbOperati
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbOperation/SetValueSpecConstArray;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraSetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_SetValueSpecConstArray_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraSetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpecConstArray_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraSetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_SetValueSpecConstArray_2(JNIEnv *, jobject, jobject)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024OperationOptions_extraSetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpecConstArray_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbOperation_OperationOptions_t, ttrait_c_m_n_n_NdbOperation_SetValueSpecArray_cp, &NdbOperation::OperationOptions::extraSetValues >(env, obj, p0);
}
@@ -8244,9 +8244,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbOperati
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbDictionary/ColumnConst;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_ColumnConst_2(JNIEnv *, jobject, jobject)");
+ TRACE("void Java_com_mysql_ndbjtie_ndbapi_NdbOperation_00024SetValueSpec_column__Lcom_mysql_ndbjtie_ndbapi_NdbDictionary_00024ColumnConst_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbOperation_SetValueSpec_t, ttrait_c_m_n_n_NdbDictionary_Column_cp, &NdbOperation::SetValueSpec::column >(env, obj, p0);
}
@@ -9392,9 +9392,9 @@ Java_com_mysql_ndbjtie_ndbapi_NdbScanOpe
* Signature: (Lcom/mysql/ndbjtie/ndbapi/NdbOperation/GetValueSpecArray;)V
*/
JNIEXPORT void JNICALL
-Java_com_mysql_ndbjtie_ndbapi_NdbScanOperation_00024ScanOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_GetValueSpecArray_2(JNIEnv * env, jobject obj, jobject p0)
+Java_com_mysql_ndbjtie_ndbapi_NdbScanOperation_00024ScanOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpecArray_2(JNIEnv * env, jobject obj, jobject p0)
{
- TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbScanOperation_00024ScanOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_GetValueSpecArray_2(JNIEnv *, jobject, jobject)");
+ TRACE("Java_com_mysql_ndbjtie_ndbapi_NdbScanOperation_00024ScanOptions_extraGetValues__Lcom_mysql_ndbjtie_ndbapi_NdbOperation_00024GetValueSpecArray_2(JNIEnv *, jobject, jobject)");
gset< ttrait_c_m_n_n_NdbScanOperation_ScanOptions_t, ttrait_c_m_n_n_NdbOperation_GetValueSpecArray_p, &NdbScanOperation::ScanOptions::extraGetValues >(env, obj, p0);
}
=== modified file 'storage/ndb/test/ndbapi/testNodeRestart.cpp'
--- a/storage/ndb/test/ndbapi/testNodeRestart.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/test/ndbapi/testNodeRestart.cpp revid:mikael.ronstrom@stripped
@@ -2594,6 +2594,9 @@ runBug34216(NDBT_Context* ctx, NDBT_Step
while(i<loops && result != NDBT_FAILED && !ctx->isTestStopped())
{
+ if (i > 0 && ctx->closeToTimeout(100 / loops))
+ break;
+
int id = lastId % restarter.getNumDbNodes();
int nodeId = restarter.getDbNodeId(id);
int err = 5048 + ((i+offset) % 2);
=== modified file 'storage/ndb/test/ndbapi/testSystemRestart.cpp'
--- a/storage/ndb/test/ndbapi/testSystemRestart.cpp revid:mikael@dator9-20120102181531-rjua7sw123o8r4t9
+++ b/storage/ndb/test/ndbapi/testSystemRestart.cpp revid:mikael.ronstrom@stripped
@@ -1405,6 +1405,8 @@ int runSR_DD_1(NDBT_Context* ctx, NDBT_S
HugoTransactions hugoTrans(*ctx->getTab());
while(i<=loops && result != NDBT_FAILED)
{
+ if (i > 0 && ctx->closeToTimeout(30))
+ break;
if (lcploop)
{
@@ -1508,6 +1510,8 @@ int runSR_DD_2(NDBT_Context* ctx, NDBT_S
HugoTransactions hugoTrans(*ctx->getTab());
while(i<=loops && result != NDBT_FAILED)
{
+ if (i > 0 && ctx->closeToTimeout(30))
+ break;
if (lcploop)
{
@@ -1612,6 +1616,8 @@ int runSR_DD_3(NDBT_Context* ctx, NDBT_S
HugoTransactions hugoTrans(*ctx->getTab());
while(i<=loops && result != NDBT_FAILED)
{
+ if (i > 0 && ctx->closeToTimeout(30))
+ break;
if (lcploop)
{
@@ -1853,6 +1859,9 @@ runTO(NDBT_Context* ctx, NDBT_Step* step
Uint32 i = 0;
while(i<=loops && result != NDBT_FAILED)
{
+ if (i > 0 && ctx->closeToTimeout(35))
+ break;
+
CHECK(res.dumpStateAllNodes(val, 1) == 0);
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_CHECKPOINT, 0 };
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-5.5-cluster-7.2 branch (mikael.ronstrom:3685 to 3690) | Mikael Ronstrom | 9 Jan |