diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 6e01330a85ee60eeb9e55729e8e50c8665b05533..7b5197c34b3d0ae20f5515e15e9c22ecf88ecc5f 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -1368,15 +1368,17 @@ int ha_ndbcluster::drop_indexes(Ndb *ndb, TABLE *tab) */ NDB_INDEX_TYPE ha_ndbcluster::get_index_type_from_table(uint inx) const { - return get_index_type_from_key(inx, table_share->key_info); + return get_index_type_from_key(inx, table_share->key_info, + inx == table_share->primary_key); } NDB_INDEX_TYPE ha_ndbcluster::get_index_type_from_key(uint inx, - KEY *key_info) const + KEY *key_info, + bool primary) const { bool is_hash_index= (key_info[inx].algorithm == HA_KEY_ALG_HASH); - if (inx == table_share->primary_key) + if (primary) return is_hash_index ? PRIMARY_KEY_INDEX : PRIMARY_KEY_ORDERED_INDEX; return ((key_info[inx].flags & HA_NOSAME) ? @@ -4645,7 +4647,7 @@ int ha_ndbcluster::add_index(TABLE *table_arg, KEY *key= key_info + idx; KEY_PART_INFO *key_part= key->key_part; KEY_PART_INFO *end= key_part + key->key_parts; - NDB_INDEX_TYPE idx_type= get_index_type_from_key(idx, key); + NDB_INDEX_TYPE idx_type= get_index_type_from_key(idx, key, false); DBUG_PRINT("info", ("Adding index: '%s'", key_info[idx].name)); // Add fields to key_part struct for (; key_part != end; key_part++) diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 7498d2bb6248675a65c119af5067d98557e8781e..6fde3be3542e5b507210f1ed165b42af6b0b3b84 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -722,7 +722,8 @@ static void set_tabname(const char *pathname, char *tabname); void release_metadata(); NDB_INDEX_TYPE get_index_type(uint idx_no) const; NDB_INDEX_TYPE get_index_type_from_table(uint index_no) const; - NDB_INDEX_TYPE get_index_type_from_key(uint index_no, KEY *key_info) const; + NDB_INDEX_TYPE get_index_type_from_key(uint index_no, KEY *key_info, + bool primary) const; int check_index_fields_not_null(uint index_no); uint set_up_partition_info(partition_info *part_info,