diff options
author | unknown <tomas@poseidon.ndb.mysql.com> | 2006-02-01 13:04:47 +0100 |
---|---|---|
committer | unknown <tomas@poseidon.ndb.mysql.com> | 2006-02-01 13:04:47 +0100 |
commit | 1fd551adff53c0e995d351aa0f0f5d989f3523b8 (patch) | |
tree | b89ce772a833d56bd55658a8a9e7d3b26a7ce8ff | |
parent | 0b88ef9dc707ff97d87f44d45366f18b6c7fb565 (diff) | |
parent | bd9bb91a924c778c58944ac6bddfbb05572525f9 (diff) | |
download | mariadb-git-1fd551adff53c0e995d351aa0f0f5d989f3523b8.tar.gz |
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into poseidon.ndb.mysql.com:/home/tomas/mysql51
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/sql_show.cc:
Auto merged
-rw-r--r-- | mysql-test/r/ndb_binlog_ddl_multi.result | 7 | ||||
-rw-r--r-- | mysql-test/r/ndb_dd_basic.result | 8 | ||||
-rw-r--r-- | mysql-test/r/ndb_dd_disk2memory.result | 4 | ||||
-rw-r--r-- | mysql-test/t/ndb_binlog_ddl_multi.test | 1 | ||||
-rw-r--r-- | mysql-test/t/ndb_dd_basic.test | 2 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 40 | ||||
-rw-r--r-- | sql/ha_ndbcluster.h | 2 | ||||
-rw-r--r-- | sql/handler.h | 4 | ||||
-rw-r--r-- | sql/sql_show.cc | 4 | ||||
-rw-r--r-- | storage/ndb/include/ndbapi/NdbDictionary.hpp | 3 | ||||
-rw-r--r-- | storage/ndb/src/ndbapi/NdbDictionary.cpp | 21 | ||||
-rw-r--r-- | storage/ndb/tools/restore/consumer_restore.cpp | 6 |
12 files changed, 67 insertions, 35 deletions
diff --git a/mysql-test/r/ndb_binlog_ddl_multi.result b/mysql-test/r/ndb_binlog_ddl_multi.result index 8ca7805a5d8..46789069324 100644 --- a/mysql-test/r/ndb_binlog_ddl_multi.result +++ b/mysql-test/r/ndb_binlog_ddl_multi.result @@ -31,7 +31,6 @@ master-bin1.000001 # Query # # use `test`; alter table t2 add column (b int) reset master; reset master; ALTER DATABASE mysqltest CHARACTER SET latin1; -insert into mysqltest.t1 values (1); drop table mysqltest.t1; show binlog events from 102; Log_name Pos Event_type Server_id End_log_pos Info @@ -39,12 +38,6 @@ master-bin.000001 # Query # # ALTER DATABASE mysqltest CHARACTER SET latin1 master-bin.000001 # Query # # BEGIN master-bin.000001 # Table_map # # cluster_replication.apply_status master-bin.000001 # Write_rows # # -master-bin.000001 # Table_map # # mysqltest.t1 -master-bin.000001 # Write_rows # # -master-bin.000001 # Query # # COMMIT -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # cluster_replication.apply_status -master-bin.000001 # Write_rows # # master-bin.000001 # Query # # COMMIT master-bin.000001 # Query # # use `mysqltest`; drop table `t1` reset master; diff --git a/mysql-test/r/ndb_dd_basic.result b/mysql-test/r/ndb_dd_basic.result index e2ca4e8185e..c0f20f1aee9 100644 --- a/mysql-test/r/ndb_dd_basic.result +++ b/mysql-test/r/ndb_dd_basic.result @@ -21,6 +21,14 @@ CREATE TABLE t1 (pk1 INT NOT NULL PRIMARY KEY, b INT NOT NULL, c INT NOT NULL) TABLESPACE ts1 STORAGE DISK ENGINE=NDB; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `pk1` int(11) NOT NULL, + `b` int(11) NOT NULL, + `c` int(11) NOT NULL, + PRIMARY KEY (`pk1`) +) TABLESPACE ts1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () INSERT INTO t1 VALUES (0, 0, 0); SELECT * FROM t1; pk1 b c diff --git a/mysql-test/r/ndb_dd_disk2memory.result b/mysql-test/r/ndb_dd_disk2memory.result index d7086765866..6c400f7af1f 100644 --- a/mysql-test/r/ndb_dd_disk2memory.result +++ b/mysql-test/r/ndb_dd_disk2memory.result @@ -226,7 +226,7 @@ t1 CREATE TABLE `t1` ( `b` int(11) NOT NULL, `c` int(11) NOT NULL, PRIMARY KEY (`pk1`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () ALTER TABLE test.t2 TABLESPACE table_space1 STORAGE DISK ENGINE=NDB; SHOW CREATE TABLE test.t2; @@ -236,7 +236,7 @@ t2 CREATE TABLE `t2` ( `b2` int(11) NOT NULL, `c2` int(11) NOT NULL, PRIMARY KEY (`pk2`) -) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () +) TABLESPACE table_space1 STORAGE DISK ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY () ALTER TABLE test.t1 ENGINE=NDBCLUSTER; SHOW CREATE TABLE test.t1; Table Create Table diff --git a/mysql-test/t/ndb_binlog_ddl_multi.test b/mysql-test/t/ndb_binlog_ddl_multi.test index cd05fe84925..17d304db0b1 100644 --- a/mysql-test/t/ndb_binlog_ddl_multi.test +++ b/mysql-test/t/ndb_binlog_ddl_multi.test @@ -67,7 +67,6 @@ ALTER DATABASE mysqltest CHARACTER SET latin1; # drop table and drop should come after data events --connection server2 -insert into mysqltest.t1 values (1); drop table mysqltest.t1; --connection server1 diff --git a/mysql-test/t/ndb_dd_basic.test b/mysql-test/t/ndb_dd_basic.test index d9e7fcc7ca7..0bc0e07fad8 100644 --- a/mysql-test/t/ndb_dd_basic.test +++ b/mysql-test/t/ndb_dd_basic.test @@ -54,6 +54,8 @@ CREATE TABLE t1 TABLESPACE ts1 STORAGE DISK ENGINE=NDB; +SHOW CREATE TABLE t1; + INSERT INTO t1 VALUES (0, 0, 0); SELECT * FROM t1; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 25c5fbf9b58..52b09c6cceb 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -8906,28 +8906,40 @@ ha_ndbcluster::generate_scan_filter(Ndb_cond_stack *ndb_cond_stack, /* get table space info for SHOW CREATE TABLE */ -char* ha_ndbcluster::get_tablespace_create_info() +char* ha_ndbcluster::get_tablespace_name() { - const char tablespace_key[]= " TABLESPACE "; - const char storage_key[]= " STORAGE DISK"; - char* str= 0; - Ndb *ndb= get_ndb(); NDBDICT *ndbdict= ndb->getDictionary(); + NdbError ndberr; + Uint32 id; ndb->setDatabaseName(m_dbname); const NDBTAB *ndbtab= ndbdict->getTable(m_tabname); if (ndbtab == 0) + { + ndberr= ndbdict->getNdbError(); + goto err; + } + if (!ndbtab->getTablespace(&id)) + { return 0; - - // TODO retrieve table space name if there is one + } + { + NdbDictionary::Tablespace ts= ndbdict->getTablespace(id); + ndberr= ndbdict->getNdbError(); + if(ndberr.classification != ndberror_cl_none) + goto err; + return (my_strdup(ts.getName(), MYF(0))); + } +err: + if (ndberr.status == NdbError::TemporaryError) + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_GET_TEMPORARY_ERRMSG, ER(ER_GET_TEMPORARY_ERRMSG), + ndberr.code, ndberr.message, "NDB"); + else + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_GET_ERRMSG, ER(ER_GET_ERRMSG), + ndberr.code, ndberr.message, "NDB"); return 0; - - const char *tablespace_name= "<name>"; - - uint len= sizeof(tablespace_key) + strlen(tablespace_name) + sizeof(storage_key); - str= my_malloc(len, MYF(0)); - strxnmov(str, len, tablespace_key, tablespace_name, storage_key, NullS); - return(str); } /* diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 5642a7e2d7b..f12b6198a68 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -721,7 +721,7 @@ private: uint set_up_partition_info(partition_info *part_info, TABLE *table, void *tab); - char* get_tablespace_create_info(); + char* get_tablespace_name(); int set_range_data(void *tab, partition_info* part_info); int set_list_data(void *tab, partition_info* part_info); int complemented_pk_read(const byte *old_data, byte *new_data, diff --git a/sql/handler.h b/sql/handler.h index 83dbdb19545..2702044e082 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1713,8 +1713,8 @@ public: { return FALSE; } virtual char* get_foreign_key_create_info() { return(NULL);} /* gets foreign key create string from InnoDB */ - virtual char* get_tablespace_create_info() - { return(NULL);} /* gets tablespace create string from handler */ + virtual char* get_tablespace_name() + { return(NULL);} /* gets tablespace name from handler */ /* used in ALTER TABLE; 1 if changing storage engine is allowed */ virtual bool can_switch_engines() { return 1; } /* used in REPLACE; is > 0 if table is referred by a FOREIGN KEY */ diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 55c402638d8..56920b251bc 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1141,9 +1141,11 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, to the CREATE TABLE statement */ - if ((for_str= file->get_tablespace_create_info())) + if ((for_str= file->get_tablespace_name())) { + packet->append(" TABLESPACE "); packet->append(for_str, strlen(for_str)); + packet->append(" STORAGE DISK"); my_free(for_str, MYF(0)); } diff --git a/storage/ndb/include/ndbapi/NdbDictionary.hpp b/storage/ndb/include/ndbapi/NdbDictionary.hpp index 4196328976a..4ad3d6cbfb0 100644 --- a/storage/ndb/include/ndbapi/NdbDictionary.hpp +++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp @@ -783,7 +783,7 @@ public: void setTablespace(const char * name); void setTablespace(const class Tablespace &); const char * getTablespace() const; - Uint32 getTablespaceId() const; + bool getTablespace(Uint32 *id= 0, Uint32 *version= 0) const; /** * Get table object type @@ -1736,6 +1736,7 @@ public: int createTablespace(const Tablespace &); int dropTablespace(const Tablespace&); Tablespace getTablespace(const char * name); + Tablespace getTablespace(Uint32 tablespaceId); int createDatafile(const Datafile &, bool overwrite_existing = false); int dropDatafile(const Datafile&); diff --git a/storage/ndb/src/ndbapi/NdbDictionary.cpp b/storage/ndb/src/ndbapi/NdbDictionary.cpp index 3dd73a57346..e8cc6cdfab4 100644 --- a/storage/ndb/src/ndbapi/NdbDictionary.cpp +++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp @@ -600,10 +600,16 @@ NdbDictionary::Table::createTableInDb(Ndb* pNdb, bool equalOk) const { return pNdb->getDictionary()->createTable(* this); } -Uint32 -NdbDictionary::Table::getTablespaceId() const +bool +NdbDictionary::Table::getTablespace(Uint32 *id, Uint32 *version) const { - return m_impl.m_tablespace_id; + if (m_impl.m_tablespace_id == RNIL) + return false; + if (id) + *id= m_impl.m_tablespace_id; + if (version) + *version= m_impl.m_version; + return true; } void @@ -1687,6 +1693,15 @@ NdbDictionary::Dictionary::getTablespace(const char * name){ return tmp; } +NdbDictionary::Tablespace +NdbDictionary::Dictionary::getTablespace(Uint32 tablespaceId){ + NdbDictionary::Tablespace tmp; + m_impl.m_receiver.get_filegroup(NdbTablespaceImpl::getImpl(tmp), + NdbDictionary::Object::Tablespace, + tablespaceId); + return tmp; +} + int NdbDictionary::Dictionary::createDatafile(const Datafile & df, bool force){ return m_impl.createDatafile(NdbDatafileImpl::getImpl(df), force); diff --git a/storage/ndb/tools/restore/consumer_restore.cpp b/storage/ndb/tools/restore/consumer_restore.cpp index 0d177366a57..ad33cbe7b85 100644 --- a/storage/ndb/tools/restore/consumer_restore.cpp +++ b/storage/ndb/tools/restore/consumer_restore.cpp @@ -658,11 +658,11 @@ BackupRestore::table(const TableS & table){ NdbDictionary::Table copy(*table.m_dictTable); copy.setName(split[2].c_str()); - if (copy.getTablespaceId() != RNIL) + Uint32 id; + if (copy.getTablespace(&id)) { - Uint32 id = copy.getTablespaceId(); debug << "Connecting " << name << " to tablespace oldid: " << id << flush; - NdbDictionary::Tablespace* ts = m_tablespaces[copy.getTablespaceId()]; + NdbDictionary::Tablespace* ts = m_tablespaces[id]; debug << " newid: " << ts->getObjectId() << endl; copy.setTablespace(* ts); } |