Loading mysql-test/r/ndb_alter_table2.result +19 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,22 @@ a b c select * from t1; a b c drop table t1; DROP TABLE IF EXISTS truncate_test; CREATE TABLE truncate_test ( i INT PRIMARY KEY, a INT, b VARCHAR(11), UNIQUE KEY (a) ) ENGINE = NDB; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; TRUNCATE truncate_test; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; i a b 1 1 test INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; i a b 1 1 new DROP TABLE truncate_test; mysql-test/t/ndb_alter_table2.test +31 −0 Original line number Diff line number Diff line Loading @@ -81,3 +81,34 @@ select * from t1; select * from t1; drop table t1; #For BUG#29851 TRUNCATE causes error 4350 from cluster in INSERT... ON DUPLICATE KEY UPDATE connection con1; --disable_warnings DROP TABLE IF EXISTS truncate_test; --enable_warnings CREATE TABLE truncate_test ( i INT PRIMARY KEY, a INT, b VARCHAR(11), UNIQUE KEY (a) ) ENGINE = NDB; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; connection con2; TRUNCATE truncate_test; connection con1; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; connection con2; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; DROP TABLE truncate_test; sql/ha_ndbcluster.cc +9 −1 Original line number Diff line number Diff line Loading @@ -439,7 +439,8 @@ void ha_ndbcluster::no_uncommitted_rows_reset(THD *thd) void ha_ndbcluster::invalidate_dictionary_cache(bool global) { NDBDICT *dict= get_ndb()->getDictionary(); Ndb * ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); DBUG_ENTER("invalidate_dictionary_cache"); DBUG_PRINT("info", ("invalidating %s", m_tabname)); Loading @@ -459,6 +460,7 @@ void ha_ndbcluster::invalidate_dictionary_cache(bool global) } else dict->removeCachedTable(m_tabname); build_index_list(ndb, table, ILBP_OPEN); table->s->version=0L; /* Free when thread is ready */ /* Invalidate indexes */ for (uint i= 0; i < table->s->keys; i++) Loading @@ -470,17 +472,23 @@ void ha_ndbcluster::invalidate_dictionary_cache(bool global) switch (idx_type) { case PRIMARY_KEY_ORDERED_INDEX: case ORDERED_INDEX: if (!index) break; if (global) dict->invalidateIndex(index->getName(), m_tabname); else dict->removeCachedIndex(index->getName(), m_tabname); break; case UNIQUE_ORDERED_INDEX: if (!index) break; if (global) dict->invalidateIndex(index->getName(), m_tabname); else dict->removeCachedIndex(index->getName(), m_tabname); case UNIQUE_INDEX: if (!unique_index) break; if (global) dict->invalidateIndex(unique_index->getName(), m_tabname); else Loading Loading
mysql-test/r/ndb_alter_table2.result +19 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,22 @@ a b c select * from t1; a b c drop table t1; DROP TABLE IF EXISTS truncate_test; CREATE TABLE truncate_test ( i INT PRIMARY KEY, a INT, b VARCHAR(11), UNIQUE KEY (a) ) ENGINE = NDB; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; TRUNCATE truncate_test; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; i a b 1 1 test INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; i a b 1 1 new DROP TABLE truncate_test;
mysql-test/t/ndb_alter_table2.test +31 −0 Original line number Diff line number Diff line Loading @@ -81,3 +81,34 @@ select * from t1; select * from t1; drop table t1; #For BUG#29851 TRUNCATE causes error 4350 from cluster in INSERT... ON DUPLICATE KEY UPDATE connection con1; --disable_warnings DROP TABLE IF EXISTS truncate_test; --enable_warnings CREATE TABLE truncate_test ( i INT PRIMARY KEY, a INT, b VARCHAR(11), UNIQUE KEY (a) ) ENGINE = NDB; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; connection con2; TRUNCATE truncate_test; connection con1; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; connection con2; INSERT INTO truncate_test VALUES (1, 1, 'test') ON DUPLICATE KEY UPDATE b = 'new'; SELECT * FROM truncate_test; DROP TABLE truncate_test;
sql/ha_ndbcluster.cc +9 −1 Original line number Diff line number Diff line Loading @@ -439,7 +439,8 @@ void ha_ndbcluster::no_uncommitted_rows_reset(THD *thd) void ha_ndbcluster::invalidate_dictionary_cache(bool global) { NDBDICT *dict= get_ndb()->getDictionary(); Ndb * ndb= get_ndb(); NDBDICT *dict= ndb->getDictionary(); DBUG_ENTER("invalidate_dictionary_cache"); DBUG_PRINT("info", ("invalidating %s", m_tabname)); Loading @@ -459,6 +460,7 @@ void ha_ndbcluster::invalidate_dictionary_cache(bool global) } else dict->removeCachedTable(m_tabname); build_index_list(ndb, table, ILBP_OPEN); table->s->version=0L; /* Free when thread is ready */ /* Invalidate indexes */ for (uint i= 0; i < table->s->keys; i++) Loading @@ -470,17 +472,23 @@ void ha_ndbcluster::invalidate_dictionary_cache(bool global) switch (idx_type) { case PRIMARY_KEY_ORDERED_INDEX: case ORDERED_INDEX: if (!index) break; if (global) dict->invalidateIndex(index->getName(), m_tabname); else dict->removeCachedIndex(index->getName(), m_tabname); break; case UNIQUE_ORDERED_INDEX: if (!index) break; if (global) dict->invalidateIndex(index->getName(), m_tabname); else dict->removeCachedIndex(index->getName(), m_tabname); case UNIQUE_INDEX: if (!unique_index) break; if (global) dict->invalidateIndex(unique_index->getName(), m_tabname); else Loading