Loading mysql-test/t/disabled.def +1 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,6 @@ rpl_sp : Bug#16456 rpl_until : Unstable test case, bug#15886 sp-goto : GOTO is currently is disabled - will be fixed in the future subselect : Bug#15706 (ps mode) [PATCH PENDING] rpl_ndb_blob : Bug #17505 #rpl_ndb_blob : Bug #17505 rpl_ndb_blob2 : Bug #17505 rpl_ndb_log : results are not deterministic sql/ha_ndbcluster.cc +2 −2 Original line number Diff line number Diff line Loading @@ -5525,7 +5525,7 @@ int ndbcluster_find_all_files(THD *thd) { NDBDICT::List::Element& elmt= list.elements[i]; int do_handle_table= 0; if (IS_TMP_PREFIX(elmt.name)) if (IS_TMP_PREFIX(elmt.name) || IS_NDB_BLOB_PREFIX(elmt.name)) { DBUG_PRINT("info", ("Skipping %s.%s in NDB", elmt.database, elmt.name)); continue; Loading Loading @@ -5662,7 +5662,7 @@ int ndbcluster_find_files(THD *thd,const char *db,const char *path, for (i= 0 ; i < list.count ; i++) { NDBDICT::List::Element& elmt= list.elements[i]; if (IS_TMP_PREFIX(elmt.name)) if (IS_TMP_PREFIX(elmt.name) || IS_NDB_BLOB_PREFIX(elmt.name)) { DBUG_PRINT("info", ("Skipping %s.%s in NDB", elmt.database, elmt.name)); continue; Loading sql/ha_ndbcluster_binlog.cc +0 −17 Original line number Diff line number Diff line Loading @@ -2082,23 +2082,6 @@ ndbcluster_create_event_ops(NDB_SHARE *share, const NDBTAB *ndbtab, if (share->flags & NSF_BLOB_FLAG) op->mergeEvents(true); // currently not inherited from event if (share->flags & NSF_BLOB_FLAG) { /* * Given servers S1 S2, following results in out-of-date * event->m_tableImpl and column->m_blobTable. * * S1: create table t1(a int primary key); * S2: drop table t1; * S1: create table t2(a int primary key, b blob); * S1: alter table t2 add x int; * S1: alter table t2 drop x; * * TODO fix at right place before we get here */ ndb->getDictionary()->fix_blob_events(ndbtab, event_name); } int n_columns= ndbtab->getNoOfColumns(); int n_fields= table ? table->s->fields : 0; // XXX ??? for (int j= 0; j < n_columns; j++) Loading storage/ndb/include/ndbapi/NdbDictionary.hpp +0 −1 Original line number Diff line number Diff line Loading @@ -1783,7 +1783,6 @@ public: #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL const Table * getTable(const char * name, void **data) const; void set_local_table_data_size(unsigned sz); void fix_blob_events(const Table* table, const char* ev_name); #endif }; }; Loading storage/ndb/src/ndbapi/DictCache.cpp +14 −2 Original line number Diff line number Diff line Loading @@ -159,11 +159,16 @@ GlobalDictCache::get(const char * name) switch(ver->m_status){ case OK: ver->m_refCount++; DBUG_PRINT("info", ("Table OK version=%x.%x refCount=%u", ver->m_impl->m_version & 0xFFFFFF, ver->m_impl->m_version >> 24, ver->m_refCount)); DBUG_RETURN(ver->m_impl); case DROPPED: retreive = true; // Break loop break; case RETREIVING: DBUG_PRINT("info", ("Wait for retrieving thread")); NdbCondition_WaitTimeout(m_waitForTableCondition, m_mutex, waitTime); continue; } Loading @@ -178,6 +183,7 @@ GlobalDictCache::get(const char * name) tmp.m_status = RETREIVING; tmp.m_refCount = 1; // The one retreiving it versions->push_back(tmp); DBUG_PRINT("info", ("No table found")); DBUG_RETURN(0); } Loading @@ -185,8 +191,11 @@ NdbTableImpl * GlobalDictCache::put(const char * name, NdbTableImpl * tab) { DBUG_ENTER("GlobalDictCache::put"); DBUG_PRINT("enter", ("name: %s, internal_name: %s", name, tab ? tab->m_internalName.c_str() : "tab NULL")); DBUG_PRINT("enter", ("name: %s, internal_name: %s version: %x.%x", name, tab ? tab->m_internalName.c_str() : "tab NULL", tab ? tab->m_version & 0xFFFFFF : 0, tab ? tab->m_version >> 24 : 0)); const Uint32 len = strlen(name); Vector<TableVersion> * vers = m_tableHash.getData(name, len); Loading Loading @@ -218,12 +227,14 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) vers->erase(sz - 1); } else if (ver.m_impl == 0) { DBUG_PRINT("info", ("Table OK")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = OK; } else if (ver.m_impl == &f_invalid_table) { DBUG_PRINT("info", ("Table DROPPED invalid")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = DROPPED; Loading @@ -231,6 +242,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) } else if(ver.m_impl == &f_altered_table) { DBUG_PRINT("info", ("Table DROPPED altered")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = DROPPED; Loading Loading
mysql-test/t/disabled.def +1 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,6 @@ rpl_sp : Bug#16456 rpl_until : Unstable test case, bug#15886 sp-goto : GOTO is currently is disabled - will be fixed in the future subselect : Bug#15706 (ps mode) [PATCH PENDING] rpl_ndb_blob : Bug #17505 #rpl_ndb_blob : Bug #17505 rpl_ndb_blob2 : Bug #17505 rpl_ndb_log : results are not deterministic
sql/ha_ndbcluster.cc +2 −2 Original line number Diff line number Diff line Loading @@ -5525,7 +5525,7 @@ int ndbcluster_find_all_files(THD *thd) { NDBDICT::List::Element& elmt= list.elements[i]; int do_handle_table= 0; if (IS_TMP_PREFIX(elmt.name)) if (IS_TMP_PREFIX(elmt.name) || IS_NDB_BLOB_PREFIX(elmt.name)) { DBUG_PRINT("info", ("Skipping %s.%s in NDB", elmt.database, elmt.name)); continue; Loading Loading @@ -5662,7 +5662,7 @@ int ndbcluster_find_files(THD *thd,const char *db,const char *path, for (i= 0 ; i < list.count ; i++) { NDBDICT::List::Element& elmt= list.elements[i]; if (IS_TMP_PREFIX(elmt.name)) if (IS_TMP_PREFIX(elmt.name) || IS_NDB_BLOB_PREFIX(elmt.name)) { DBUG_PRINT("info", ("Skipping %s.%s in NDB", elmt.database, elmt.name)); continue; Loading
sql/ha_ndbcluster_binlog.cc +0 −17 Original line number Diff line number Diff line Loading @@ -2082,23 +2082,6 @@ ndbcluster_create_event_ops(NDB_SHARE *share, const NDBTAB *ndbtab, if (share->flags & NSF_BLOB_FLAG) op->mergeEvents(true); // currently not inherited from event if (share->flags & NSF_BLOB_FLAG) { /* * Given servers S1 S2, following results in out-of-date * event->m_tableImpl and column->m_blobTable. * * S1: create table t1(a int primary key); * S2: drop table t1; * S1: create table t2(a int primary key, b blob); * S1: alter table t2 add x int; * S1: alter table t2 drop x; * * TODO fix at right place before we get here */ ndb->getDictionary()->fix_blob_events(ndbtab, event_name); } int n_columns= ndbtab->getNoOfColumns(); int n_fields= table ? table->s->fields : 0; // XXX ??? for (int j= 0; j < n_columns; j++) Loading
storage/ndb/include/ndbapi/NdbDictionary.hpp +0 −1 Original line number Diff line number Diff line Loading @@ -1783,7 +1783,6 @@ public: #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL const Table * getTable(const char * name, void **data) const; void set_local_table_data_size(unsigned sz); void fix_blob_events(const Table* table, const char* ev_name); #endif }; }; Loading
storage/ndb/src/ndbapi/DictCache.cpp +14 −2 Original line number Diff line number Diff line Loading @@ -159,11 +159,16 @@ GlobalDictCache::get(const char * name) switch(ver->m_status){ case OK: ver->m_refCount++; DBUG_PRINT("info", ("Table OK version=%x.%x refCount=%u", ver->m_impl->m_version & 0xFFFFFF, ver->m_impl->m_version >> 24, ver->m_refCount)); DBUG_RETURN(ver->m_impl); case DROPPED: retreive = true; // Break loop break; case RETREIVING: DBUG_PRINT("info", ("Wait for retrieving thread")); NdbCondition_WaitTimeout(m_waitForTableCondition, m_mutex, waitTime); continue; } Loading @@ -178,6 +183,7 @@ GlobalDictCache::get(const char * name) tmp.m_status = RETREIVING; tmp.m_refCount = 1; // The one retreiving it versions->push_back(tmp); DBUG_PRINT("info", ("No table found")); DBUG_RETURN(0); } Loading @@ -185,8 +191,11 @@ NdbTableImpl * GlobalDictCache::put(const char * name, NdbTableImpl * tab) { DBUG_ENTER("GlobalDictCache::put"); DBUG_PRINT("enter", ("name: %s, internal_name: %s", name, tab ? tab->m_internalName.c_str() : "tab NULL")); DBUG_PRINT("enter", ("name: %s, internal_name: %s version: %x.%x", name, tab ? tab->m_internalName.c_str() : "tab NULL", tab ? tab->m_version & 0xFFFFFF : 0, tab ? tab->m_version >> 24 : 0)); const Uint32 len = strlen(name); Vector<TableVersion> * vers = m_tableHash.getData(name, len); Loading Loading @@ -218,12 +227,14 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) vers->erase(sz - 1); } else if (ver.m_impl == 0) { DBUG_PRINT("info", ("Table OK")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = OK; } else if (ver.m_impl == &f_invalid_table) { DBUG_PRINT("info", ("Table DROPPED invalid")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = DROPPED; Loading @@ -231,6 +242,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) } else if(ver.m_impl == &f_altered_table) { DBUG_PRINT("info", ("Table DROPPED altered")); ver.m_impl = tab; ver.m_version = tab->m_version; ver.m_status = DROPPED; Loading