mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
concurrent-insert can now be set to 2 for concurrent inserts when there is holes in the data file
myisam_max_extra_sort_file_size is depricated Ensure that myisam_data_pointer_size is honoured when creating new MyISAM files Changed default value of myisam_data_pointer_size from 4 to 6 to get rid of 'table-is-full' errors include/myisam.h: Change type of myisam_block_size and myisam_concurrent_insert to make them changeable in mysqld.cc Removed not used varaible myisam_max_extra_temp_length include/thr_lock.h: Added extra parameter to get_status myisam/mi_create.c: Ensure that myisam_data_pointer_size is honoured myisam/mi_dynrec.c: If 'append_insert_at_end' is set, only write at end of myisam record file myisam/mi_locking.c: Add extra argument to 'mi_get_status' to allow thr_lock to signal that we want to do a concurrent insert If this is used, we will append new insert rows at end of data file. Change mi_check_status() to allow concurrent_inserts even if there are holes in the file when myisam_concurent_insert=2 myisam/mi_static.c: Change behavior of myisam_concurrent_insert so that setting this to 2 allows inserts even if there is a hole in the data file. Default value is 2 for MyISAM direct usage but will be set to 1 (old default) by mysqld.cc myisam/mi_statrec.c: If 'append_insert_at_end' is set, only write at end of myisam record file myisam/mi_write.c: If 'append_insert_at_end' is set, only write at end of myisam record file myisam/myisamdef.h: Support for insert-at-end even if there is holes in data file mysql-test/r/gis-rtree.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/group_min_max.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/index_merge.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/index_merge_ror.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/merge.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/myisam.result: Test of concurrent_insert=2 mysql-test/r/null.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/preload.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/ps_1general.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/range.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/r/variables.result: concurrent_insert is now a integer, not a boolean myisam_extra_sort_file_size is deleted mysql-test/r/view.result: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/t/index_merge.test: Test result changed because default value for myisam_data_pointer_size is changed from 4 -> 6 mysql-test/t/myisam.test: Test of concurrent_insert=2 mysql-test/t/ps_1general.test: Drop test table mysql-test/t/variables.test: concurrent_insert is now a integer, not a boolean myisam_extra_sort_file_size is deleted mysql-test/t/view.test: Drop tables that may be left from previous tests mysys/thr_lock.c: Extra paramter to get_status to signal if concurrent_insert was used sql/mysqld.cc: concurrent-insert can now be set to 2 for concurrent inserts when there is holes in the data file myisam_max_extra_sort_file_size is depricated sql/set_var.cc: concurrent-insert is now an integer, not a bool myisam_max_extra_sort_file_size is deleted
This commit is contained in:
parent
a1494918f3
commit
b21cf962e3
29 changed files with 306 additions and 178 deletions
|
|
@ -149,7 +149,9 @@ static int write_dynamic_record(MI_INFO *info, const byte *record,
|
|||
{
|
||||
if (_mi_find_writepos(info,reclength,&filepos,&length))
|
||||
goto err;
|
||||
if (_mi_write_part_record(info,filepos,length,info->s->state.dellink,
|
||||
if (_mi_write_part_record(info,filepos,length,
|
||||
(info->append_insert_at_end ?
|
||||
HA_OFFSET_ERROR : info->s->state.dellink),
|
||||
(byte**) &record,&reclength,&flag))
|
||||
goto err;
|
||||
} while (reclength);
|
||||
|
|
@ -171,7 +173,8 @@ static int _mi_find_writepos(MI_INFO *info,
|
|||
ulong tmp;
|
||||
DBUG_ENTER("_mi_find_writepos");
|
||||
|
||||
if (info->s->state.dellink != HA_OFFSET_ERROR)
|
||||
if (info->s->state.dellink != HA_OFFSET_ERROR &&
|
||||
!info->append_insert_at_end)
|
||||
{
|
||||
/* Deleted blocks exists; Get last used block */
|
||||
*filepos=info->s->state.dellink;
|
||||
|
|
@ -420,8 +423,9 @@ int _mi_write_part_record(MI_INFO *info,
|
|||
else if (length-long_block < *reclength+4)
|
||||
{ /* To short block */
|
||||
if (next_filepos == HA_OFFSET_ERROR)
|
||||
next_filepos=info->s->state.dellink != HA_OFFSET_ERROR ?
|
||||
info->s->state.dellink : info->state->data_file_length;
|
||||
next_filepos= (info->s->state.dellink != HA_OFFSET_ERROR &&
|
||||
!info->append_insert_at_end ?
|
||||
info->s->state.dellink : info->state->data_file_length);
|
||||
if (*flag == 0) /* First block */
|
||||
{
|
||||
if (*reclength > MI_MAX_BLOCK_LENGTH)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue