diff options
author | unknown <ramil@mysql.com> | 2005-03-15 13:32:12 +0400 |
---|---|---|
committer | unknown <ramil@mysql.com> | 2005-03-15 13:32:12 +0400 |
commit | 9c04a77e0c69728941387e88bd118adbc0374c45 (patch) | |
tree | 41e3f57ec9e5632602bbaf0aeb4a973e7c77dccb /sql/ha_heap.cc | |
parent | 2427f3695ccd495eb33ce10c3fb3a636823e8850 (diff) | |
download | mariadb-git-9c04a77e0c69728941387e88bd118adbc0374c45.tar.gz |
A fix (bug #8489: Strange auto_increment behaviour with HEAP table).
heap/hp_create.c:
A fix (bug #8489: Strange auto_increment behaviour with HEAP table).
Handle autoincrement keys MyISAM-way.
include/heap.h:
A fix (bug #8489: Strange auto_increment behaviour with HEAP table).
Handle autoincrement keys MyISAM-way.
sql/ha_heap.cc:
A fix (bug #8489: Strange auto_increment behaviour with HEAP table).
Handle autoincrement keys MyISAM-way.
Diffstat (limited to 'sql/ha_heap.cc')
-rw-r--r-- | sql/ha_heap.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc index 3c2249ce281..c483ab8fffa 100644 --- a/sql/ha_heap.cc +++ b/sql/ha_heap.cc @@ -446,6 +446,7 @@ int ha_heap::create(const char *name, TABLE *table_arg, HA_KEYSEG *seg; char buff[FN_REFLEN]; int error; + bool found_real_auto_increment= 0; for (key= parts= 0; key < table_arg->keys; key++) parts+= table_arg->key_info[key].key_parts; @@ -506,17 +507,20 @@ int ha_heap::create(const char *name, TABLE *table_arg, seg->null_bit= 0; seg->null_pos= 0; } + // We have to store field->key_type() as seg->type can differ from it if (field->flags & AUTO_INCREMENT_FLAG) - { - auto_key= key + 1; auto_key_type= field->key_type(); - } } } + if (table_arg->found_next_number_field) + { + keydef[table_arg->next_number_index].flag|= HA_AUTO_KEY; + found_real_auto_increment= table_arg->next_number_key_offset == 0; + } mem_per_row+= MY_ALIGN(table_arg->reclength + 1, sizeof(char*)); HP_CREATE_INFO hp_create_info; - hp_create_info.auto_key= auto_key; hp_create_info.auto_key_type= auto_key_type; + hp_create_info.with_auto_increment= found_real_auto_increment; hp_create_info.auto_increment= (create_info->auto_increment_value ? create_info->auto_increment_value - 1 : 0); hp_create_info.max_table_size=current_thd->variables.max_heap_table_size; |