From 445e828785da97c7292103f539835098b2dd67b0 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 May 2006 15:07:11 +0200 Subject: [PATCH 1/2] Removed dead code that had been commented out --- ndb/src/ndbapi/NdbDictionaryImpl.cpp | 2 +- ndb/src/ndbapi/NdbDictionaryImpl.hpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/ndb/src/ndbapi/NdbDictionaryImpl.cpp index 80a584651d1..c2604ebe682 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -2147,7 +2147,7 @@ NdbDictionaryImpl::dropIndex(const char * indexName, m_error.code = 4243; return -1; } - int ret = dropIndex(*idx); //, tableName); + int ret = dropIndex(*idx); // If index stored in cache is incompatible with the one in the kernel // we must clear the cache and try again if (ret == INCOMPATIBLE_VERSION) { diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/ndb/src/ndbapi/NdbDictionaryImpl.hpp index 8763a444503..ad587a10e1d 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.hpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.hpp @@ -379,7 +379,6 @@ public: int createIndex(NdbIndexImpl &ix); int dropIndex(const char * indexName, const char * tableName); - // int dropIndex(NdbIndexImpl &, const char * tableName); int dropIndex(NdbIndexImpl &); NdbTableImpl * getIndexTable(NdbIndexImpl * index, NdbTableImpl * table); From 22e3b0c66f695e18269e2fc221461611fa5132c3 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 2 Jun 2006 07:26:45 +0200 Subject: [PATCH 2/2] Bug #18864 TRUNCATE TABLE doesn't reset AUTO_INCREMENT value on ndb table --- mysql-test/r/ndb_truncate.result | 23 ++++++++++++++++------- mysql-test/t/ndb_truncate.test | 23 ++++++++++++++--------- sql/ha_ndbcluster.cc | 6 ++++++ sql/handler.h | 3 +-- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/mysql-test/r/ndb_truncate.result b/mysql-test/r/ndb_truncate.result index 38f3a78029c..811e5e3afeb 100644 --- a/mysql-test/r/ndb_truncate.result +++ b/mysql-test/r/ndb_truncate.result @@ -1,14 +1,23 @@ -DROP TABLE IF EXISTS t2; -CREATE TABLE t2 ( -a bigint unsigned NOT NULL PRIMARY KEY, +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 ( +a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; -select count(*) from t2; +select count(*) from t1; count(*) 5000 -truncate table t2; -select count(*) from t2; +select * from t1 order by a limit 2; +a b c +1 509 2500 +2 510 7 +truncate table t1; +select count(*) from t1; count(*) 0 -drop table t2; +insert into t1 values(NULL,1,1),(NULL,2,2); +select * from t1 order by a; +a b c +1 1 1 +2 2 2 +drop table t1; diff --git a/mysql-test/t/ndb_truncate.test b/mysql-test/t/ndb_truncate.test index 73af70d0d0f..a1ef4be0d48 100644 --- a/mysql-test/t/ndb_truncate.test +++ b/mysql-test/t/ndb_truncate.test @@ -2,12 +2,11 @@ -- source include/not_embedded.inc --disable_warnings -DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t1, t2; --enable_warnings - -CREATE TABLE t2 ( - a bigint unsigned NOT NULL PRIMARY KEY, +CREATE TABLE t1 ( + a bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, b int unsigned not null, c int unsigned ) engine=ndbcluster; @@ -20,17 +19,23 @@ let $1=500; disable_query_log; while ($1) { - eval insert into t2 values($1*10, $1+9, 5*$1), ($1*10+1, $1+10, 7),($1*10+2, $1+10, 7*$1), ($1*10+3, $1+10, 10+$1), ($1*10+4, $1+10, 70*$1), ($1*10+5, $1+10, 7), ($1*10+6, $1+10, 9), ($1*10+7, $1+299, 899), ($1*10+8, $1+10, 12), ($1*10+9, $1+10, 14*$1); + eval insert into t1 values(NULL, $1+9, 5*$1), (NULL, $1+10, 7),(NULL, $1+10, 7*$1), (NULL, $1+10, 10+$1), (NULL, $1+10, 70*$1), (NULL, $1+10, 7), (NULL, $1+10, 9), (NULL, $1+299, 899), (NULL, $1+10, 12), (NULL, $1+10, 14*$1); dec $1; } enable_query_log; -select count(*) from t2; +select count(*) from t1; -truncate table t2; +select * from t1 order by a limit 2; -select count(*) from t2; +truncate table t1; -drop table t2; +select count(*) from t1; + +insert into t1 values(NULL,1,1),(NULL,2,2); + +select * from t1 order by a; + +drop table t1; # End of 4.1 tests diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 3f2c6cbc6bb..ecbe42860ef 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3767,6 +3767,12 @@ int ha_ndbcluster::create(const char *name, set_dbname(name2); set_tabname(name2); + if (current_thd->lex->sql_command == SQLCOM_TRUNCATE) + { + DBUG_PRINT("info", ("Dropping and re-creating table for TRUNCATE")); + if ((my_errno= delete_table(name))) + DBUG_RETURN(my_errno); + } if (create_from_engine) { /* diff --git a/sql/handler.h b/sql/handler.h index d4bb19dd7b2..e361dfd4559 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -533,8 +533,7 @@ extern TYPELIB myisam_stats_method_typelib; #define ha_supports_generate(T) (T != DB_TYPE_INNODB && \ T != DB_TYPE_BERKELEY_DB && \ T != DB_TYPE_ARCHIVE_DB && \ - T != DB_TYPE_FEDERATED_DB && \ - T != DB_TYPE_NDBCLUSTER) + T != DB_TYPE_FEDERATED_DB) bool ha_caching_allowed(THD* thd, char* table_key, uint key_length, uint8 cache_type);