diff options
author | unknown <tomas@poseidon.ndb.mysql.com> | 2006-02-07 16:31:20 +0100 |
---|---|---|
committer | unknown <tomas@poseidon.ndb.mysql.com> | 2006-02-07 16:31:20 +0100 |
commit | 3e463ddad49bd315b3e2d4752295623759be3f88 (patch) | |
tree | 7b1a816b2f5d7aeb677471d13516816e0ba86541 | |
parent | 76d8dd3e4dbe4d5a2e4c1cf99ff441dc7ef30aab (diff) | |
download | mariadb-git-3e463ddad49bd315b3e2d4752295623759be3f88.tar.gz |
Bug #17005 Ndb partition handling for create table like is broken
-rw-r--r-- | sql/ha_ndbcluster.cc | 1 | ||||
-rw-r--r-- | sql/sql_partition.cc | 22 |
2 files changed, 15 insertions, 8 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 361401e22d6..f1fdfe86930 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -9592,6 +9592,7 @@ bool ha_ndbcluster::get_no_parts(const char *name, uint *no_parts) break; } ndb= get_ndb(); + ndb->setDatabaseName(m_dbname); dict= ndb->getDictionary(); if (!(tab= dict->getTable(m_tabname))) ERR_BREAK(dict->getNdbError(), err); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index aec0d2108ed..c6df76f2674 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -250,14 +250,14 @@ char *are_partitions_in_table(partition_info *new_part_info, FALSE Success */ -bool partition_default_handling(TABLE *table, partition_info *part_info) +bool partition_default_handling(TABLE *table, partition_info *part_info, + const char *normalized_path) { DBUG_ENTER("partition_default_handling"); if (part_info->use_default_no_partitions) { - if (table->file->get_no_parts(table->s->normalized_path.str, - &part_info->no_parts)) + if (table->file->get_no_parts(normalized_path, &part_info->no_parts)) { DBUG_RETURN(TRUE); } @@ -266,8 +266,7 @@ bool partition_default_handling(TABLE *table, partition_info *part_info) part_info->use_default_no_subpartitions) { uint no_parts; - if (table->file->get_no_parts(table->s->normalized_path.str, - &no_parts)) + if (table->file->get_no_parts(normalized_path, &no_parts)) { DBUG_RETURN(TRUE); } @@ -2005,7 +2004,8 @@ bool fix_partition_func(THD *thd, const char* name, TABLE *table, if (!is_create_table_ind) { - if (partition_default_handling(table, part_info)) + if (partition_default_handling(table, part_info, + table->s->normalized_path.str)) { DBUG_RETURN(TRUE); } @@ -3901,9 +3901,15 @@ bool mysql_unpack_partition(THD *thd, const uchar *part_buf, old_lex->name contains the t2 and the table we are opening has name t1. */ - if (partition_default_handling(table, part_info)) + Table_ident *table_ident= (Table_ident *)old_lex->name; + char *src_db= table_ident->db.str ? table_ident->db.str : thd->db; + char *src_table= table_ident->table.str; + char buf[FN_REFLEN]; + build_table_filename(buf, sizeof(buf), src_db, src_table, ""); + if (partition_default_handling(table, part_info, buf)) { - DBUG_RETURN(TRUE); + result= TRUE; + goto end; } } else |