Loading heap/hp_delete.c +2 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,8 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos); custom_arg.search_flag= SEARCH_SAME; old_allocated= keyinfo->rb_tree.allocated; res= tree_delete(&keyinfo->rb_tree, info->recbuf, &custom_arg); res= tree_delete(&keyinfo->rb_tree, info->recbuf, custom_arg.key_length, &custom_arg); info->s->index_length-= (old_allocated - keyinfo->rb_tree.allocated); return res; } Loading include/my_tree.h +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ TREE_ELEMENT *tree_insert(TREE *tree,void *key, uint key_size, void *tree_search(TREE *tree, void *key, void *custom_arg); int tree_walk(TREE *tree,tree_walk_action action, void *argument, TREE_WALK visit); int tree_delete(TREE *tree, void *key, void *custom_arg); int tree_delete(TREE *tree, void *key, uint key_size, void *custom_arg); void *tree_search_key(TREE *tree, const void *key, TREE_ELEMENT **parents, TREE_ELEMENT ***last_pos, enum ha_rkey_function flag, void *custom_arg); Loading myisam/myisamlog.c +1 −1 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ static int examine_log(my_string file_name, char **table_names) { if (!curr_file_info->closed) files_open--; VOID(tree_delete(&tree, (gptr) curr_file_info, tree.custom_arg)); VOID(tree_delete(&tree, (gptr) curr_file_info, 0, tree.custom_arg)); } break; case MI_LOG_EXTRA: Loading mysql-test/r/heap_btree.result +10 −0 Original line number Diff line number Diff line Loading @@ -246,3 +246,13 @@ DELETE from t1 where a < 100; SELECT * from t1; a DROP TABLE t1; CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory; INSERT INTO t1 VALUES(0); SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; INDEX_LENGTH 21 UPDATE t1 SET val=1; SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; INDEX_LENGTH 21 DROP TABLE t1; mysql-test/t/heap_btree.test +10 −0 Original line number Diff line number Diff line Loading @@ -164,4 +164,14 @@ DELETE from t1 where a < 100; SELECT * from t1; DROP TABLE t1; # # BUG#18160 - Memory-/HEAP Table endless growing indexes # CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory; INSERT INTO t1 VALUES(0); SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; UPDATE t1 SET val=1; SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; DROP TABLE t1; # End of 4.1 tests Loading
heap/hp_delete.c +2 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,8 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos); custom_arg.search_flag= SEARCH_SAME; old_allocated= keyinfo->rb_tree.allocated; res= tree_delete(&keyinfo->rb_tree, info->recbuf, &custom_arg); res= tree_delete(&keyinfo->rb_tree, info->recbuf, custom_arg.key_length, &custom_arg); info->s->index_length-= (old_allocated - keyinfo->rb_tree.allocated); return res; } Loading
include/my_tree.h +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ TREE_ELEMENT *tree_insert(TREE *tree,void *key, uint key_size, void *tree_search(TREE *tree, void *key, void *custom_arg); int tree_walk(TREE *tree,tree_walk_action action, void *argument, TREE_WALK visit); int tree_delete(TREE *tree, void *key, void *custom_arg); int tree_delete(TREE *tree, void *key, uint key_size, void *custom_arg); void *tree_search_key(TREE *tree, const void *key, TREE_ELEMENT **parents, TREE_ELEMENT ***last_pos, enum ha_rkey_function flag, void *custom_arg); Loading
myisam/myisamlog.c +1 −1 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ static int examine_log(my_string file_name, char **table_names) { if (!curr_file_info->closed) files_open--; VOID(tree_delete(&tree, (gptr) curr_file_info, tree.custom_arg)); VOID(tree_delete(&tree, (gptr) curr_file_info, 0, tree.custom_arg)); } break; case MI_LOG_EXTRA: Loading
mysql-test/r/heap_btree.result +10 −0 Original line number Diff line number Diff line Loading @@ -246,3 +246,13 @@ DELETE from t1 where a < 100; SELECT * from t1; a DROP TABLE t1; CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory; INSERT INTO t1 VALUES(0); SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; INDEX_LENGTH 21 UPDATE t1 SET val=1; SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; INDEX_LENGTH 21 DROP TABLE t1;
mysql-test/t/heap_btree.test +10 −0 Original line number Diff line number Diff line Loading @@ -164,4 +164,14 @@ DELETE from t1 where a < 100; SELECT * from t1; DROP TABLE t1; # # BUG#18160 - Memory-/HEAP Table endless growing indexes # CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory; INSERT INTO t1 VALUES(0); SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; UPDATE t1 SET val=1; SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='t1'; DROP TABLE t1; # End of 4.1 tests