From: magnus.blaudd Date: November 10 2011 8:25am Subject: bzr push into mysql-5.5-cluster branch (magnus.blaudd:3648 to 3649) List-Archive: http://lists.mysql.com/commits/141891 Message-Id: <201111100825.pAA8PIlO030225@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3649 magnus.blaudd@stripped 2011-11-10 ndb schema dist - move print function for share to NDB_SHARE - improve printout - split out the part which prints Ndb_event_data - add acessor function to get Ndb_event_data* from share modified: sql/ha_ndbcluster.cc sql/ndb_event_data.cc sql/ndb_event_data.h sql/ndb_share.cc sql/ndb_share.h 3648 magnus.blaudd@stripped 2011-11-09 ndb schema dist - remove unnecessary setting of NO_NO_LOCK_SCHEMA_OP(i.e no global schema lock) before calling ndb_create_table_from_engine modified: sql/ha_ndbcluster_binlog.cc === modified file 'sql/ha_ndbcluster.cc' --- a/sql/ha_ndbcluster.cc 2011-11-09 07:31:37 +0000 +++ b/sql/ha_ndbcluster.cc 2011-11-10 08:21:36 +0000 @@ -13414,38 +13414,15 @@ static uchar *ndbcluster_get_key(NDB_SHA #ifndef DBUG_OFF -static void print_share(const char* where, NDB_SHARE* share) -{ - fprintf(DBUG_FILE, - "%s %s.%s: use_count: %u, commit_count: %lu\n", - where, share->db, share->table_name, share->use_count, - (ulong) share->commit_count); - fprintf(DBUG_FILE, - " - key: %s, key_length: %d\n", - share->key, share->key_length); - - Ndb_event_data *event_data= 0; - if (share->event_data) - event_data= share->event_data; - else if (share->op) - event_data= (Ndb_event_data *) share->op->getCustomData(); - if (event_data) - { - fprintf(DBUG_FILE, - " - event_data->shadow_table: %p %s.%s\n", - event_data->shadow_table, event_data->shadow_table->s->db.str, - event_data->shadow_table->s->table_name.str); - } -} - - static void print_ndbcluster_open_tables() { DBUG_LOCK_FILE; fprintf(DBUG_FILE, ">ndbcluster_open_tables\n"); for (uint i= 0; i < ndbcluster_open_tables.records; i++) - print_share("", - (NDB_SHARE*)my_hash_element(&ndbcluster_open_tables, i)); + { + NDB_SHARE* share= (NDB_SHARE*)my_hash_element(&ndbcluster_open_tables, i); + share->print("", DBUG_FILE); + } fprintf(DBUG_FILE, "print((t), DBUG_FILE);); \ DBUG_UNLOCK_FILE; @@ -13656,11 +13633,7 @@ int ndbcluster_rename_share(THD *thd, ND ha_ndbcluster::set_tabname(share->new_key, share->table_name); dbug_print_share("ndbcluster_rename_share:", share); - Ndb_event_data *event_data= 0; - if (share->event_data) - event_data= share->event_data; - else if (share->op) - event_data= (Ndb_event_data *) share->op->getCustomData(); + Ndb_event_data *event_data= share->get_event_data_ptr(); if (event_data && event_data->shadow_table) { if (!IS_TMP_PREFIX(share->table_name)) === modified file 'sql/ndb_event_data.cc' --- a/sql/ndb_event_data.cc 2011-10-29 09:02:21 +0000 +++ b/sql/ndb_event_data.cc 2011-11-10 08:21:36 +0000 @@ -42,3 +42,13 @@ Ndb_event_data::~Ndb_event_data() */ my_free(ndb_value[0]); } + + +void Ndb_event_data::print(const char* where, FILE* file) const +{ + fprintf(file, + "%s shadow_table: %p '%s.%s'\n", + where, + shadow_table, shadow_table->s->db.str, + shadow_table->s->table_name.str); +} === modified file 'sql/ndb_event_data.h' --- a/sql/ndb_event_data.h 2011-10-29 09:02:21 +0000 +++ b/sql/ndb_event_data.h 2011-11-10 08:21:36 +0000 @@ -34,6 +34,8 @@ public: struct TABLE *shadow_table; struct NDB_SHARE *share; union NdbValue *ndb_value[2]; + + void print(const char* where, FILE* file) const; }; #endif === modified file 'sql/ndb_share.cc' --- a/sql/ndb_share.cc 2011-11-09 06:31:45 +0000 +++ b/sql/ndb_share.cc 2011-11-10 08:21:36 +0000 @@ -20,6 +20,8 @@ #include "ndb_dist_priv_util.h" #include "ha_ndbcluster_tables.h" +#include + #include extern Ndb* g_ndb; @@ -39,10 +41,11 @@ NDB_SHARE::destroy(NDB_SHARE* share) } #endif share->new_op= 0; - if (share->event_data) + Ndb_event_data* event_data = share->event_data; + if (event_data) { - delete share->event_data; - share->event_data= 0; + delete event_data; + event_data= 0; } free_root(&share->mem_root, MYF(0)); my_free(share); @@ -95,3 +98,52 @@ NDB_SHARE::need_events(bool default_on) DBUG_PRINT("exit", ("no events(the default for this mysqld)")); DBUG_RETURN(false); } + + +Ndb_event_data* NDB_SHARE::get_event_data_ptr() const +{ + if (event_data) + { + // The event_data pointer is only used before + // creating the NdbEventoperation -> check no op yet + assert(!op); + + return event_data; + } + + if (op) + { + // The event_data should now be empty since it's been moved to + // op's custom data + assert(!event_data); + + // Check that op has custom data + assert(op->getCustomData()); + + return (Ndb_event_data*)op->getCustomData(); + } + + return NULL; +} + + +void NDB_SHARE::print(const char* where, FILE* file) const +{ + fprintf(file, "%s %s.%s: use_count: %u\n", + where, db, table_name, use_count); + fprintf(file, " - key: '%s', key_length: %d\n", key, key_length); + fprintf(file, " - commit_count: %llu\n", commit_count); + if (new_key) + fprintf(file, " - new_key: %p, '%s'\n", + new_key, new_key); + if (event_data) + fprintf(file, " - event_data: %p\n", event_data); + if (op) + fprintf(file, " - op: %p\n", op); + if (new_op) + fprintf(file, " - new_op: %p\n", new_op); + + Ndb_event_data *event_data_ptr= get_event_data_ptr(); + if (event_data_ptr) + event_data_ptr->print(" -", file); +} === modified file 'sql/ndb_share.h' --- a/sql/ndb_share.h 2011-11-09 06:31:45 +0000 +++ b/sql/ndb_share.h 2011-11-10 08:21:36 +0000 @@ -193,6 +193,10 @@ struct NDB_SHARE { const char* table_name); static void destroy(NDB_SHARE* share); + class Ndb_event_data* get_event_data_ptr() const; + + void print(const char* where, FILE* file = stderr) const; + /* Returns true if this share need to subscribe to events from the table. No bundle (reason: useless for push emails).