diff options
author | unknown <monty@donna.mysql.com> | 2000-09-26 22:39:45 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2000-09-26 22:39:45 +0300 |
commit | b31f06a74efdfb790e139dae2fc0fb54bc2341b6 (patch) | |
tree | ea6dbe861611447827a284bc7e8a9fafd9222d6d | |
parent | f0c7c8384123639570f2bc61b7e2c806a386e780 (diff) | |
download | mariadb-git-b31f06a74efdfb790e139dae2fc0fb54bc2341b6.tar.gz |
Small fixes for release
Docs/manual.texi:
Update of file limits on windows
myisam/mi_close.c:
Fix for alter table on windows
myisam/mi_extra.c:
Fix for alter table on windows
myisam/myisamlog.c:
Corrected statistics information
sql-bench/limits/mysql-3.23.cfg:
Update to new crash-me
sql-bench/limits/mysql.cfg:
Update to new crash-me
sql/sql_base.cc:
Fix if end of memory
sql/table.cc:
Fix of new introduced index-handling bug
-rw-r--r-- | Docs/manual.texi | 3 | ||||
-rw-r--r-- | myisam/mi_close.c | 2 | ||||
-rw-r--r-- | myisam/mi_extra.c | 2 | ||||
-rw-r--r-- | myisam/myisamlog.c | 30 | ||||
-rw-r--r-- | sql-bench/limits/mysql-3.23.cfg | 9 | ||||
-rw-r--r-- | sql-bench/limits/mysql.cfg | 9 | ||||
-rw-r--r-- | sql/sql_base.cc | 9 | ||||
-rw-r--r-- | sql/table.cc | 15 |
8 files changed, 51 insertions, 28 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 19e38188467..87ee4925f68 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -7694,6 +7694,9 @@ able to mix @code{INSERT} and @code{SELECT}. Currently we use mutexes to emulate @code{pread()}/@code{pwrite()}. We will in the long run replace the file level interface with a virtual interface so that we can use the @code{readfile()}/@code{writefile()} interface on NT to get more speed. +The current implementation will however limit the number of open files +@strong{MySQL} can use to 1024, which means that you will not be able to +run as many concurrent threads on NT as on Unix. @item Blocking read @strong{MySQL} uses a blocking read for each connection. diff --git a/myisam/mi_close.c b/myisam/mi_close.c index ebd64aa2349..059e7d3223a 100644 --- a/myisam/mi_close.c +++ b/myisam/mi_close.c @@ -36,7 +36,7 @@ int mi_close(register MI_INFO *info) if (info->lock_type == F_EXTRA_LCK) info->lock_type=F_UNLCK; /* HA_EXTRA_NO_USER_CHANGE */ - if (share->reopen == 1) + if (share->reopen == 1 && share->kfile >= 0) _mi_decrement_open_count(info); if (info->lock_type != F_UNLCK) diff --git a/myisam/mi_extra.c b/myisam/mi_extra.c index b9ded70402a..b90b5b35780 100644 --- a/myisam/mi_extra.c +++ b/myisam/mi_extra.c @@ -241,6 +241,8 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function) error=my_errno; info->lock_type = F_UNLCK; } + if (share->kfile >= 0) + _mi_decrement_open_count(info); if (share->kfile >= 0 && my_close(share->kfile,MYF(0))) error=my_errno; { diff --git a/myisam/myisamlog.c b/myisam/myisamlog.c index e5e8bba6ea6..a492448065d 100644 --- a/myisam/myisamlog.c +++ b/myisam/myisamlog.c @@ -355,7 +355,7 @@ static int examine_log(my_string file_name, char **table_names) } command=(uint) head[0]; if (command < sizeof(com_count)/sizeof(com_count[0][0])/3 && - (!curr_file_info || curr_file_info->used)) + (!table_names[0] || (curr_file_info && curr_file_info->used))) { com_count[command][0]++; if (result) @@ -363,9 +363,12 @@ static int examine_log(my_string file_name, char **table_names) } switch ((enum myisam_log_commands) command) { case MI_LOG_OPEN: - com_count[command][0]--; /* Must be counted explicite */ - if (result) - com_count[command][1]--; + if (!table_names[0]) + { + com_count[command][0]--; /* Must be counted explicite */ + if (result) + com_count[command][1]--; + } if (curr_file_info) printf("\nWarning: %s is opened twice with same process and filenumber\n", @@ -502,6 +505,8 @@ static int examine_log(my_string file_name, char **table_names) { if (!recover) goto com_err; + if (verbose) + printf_log("error: Didn't find row to delete with mi_rrnd"); com_count[command][2]++; /* Mark error */ } mi_result=mi_delete(curr_file_info->isam,curr_file_info->record); @@ -512,6 +517,9 @@ static int examine_log(my_string file_name, char **table_names) goto com_err; if (mi_result) com_count[command][2]++; /* Mark error */ + if (verbose) + printf_log("error: Got result %d from mi_delete instead of %d", + mi_result, result); } } break; @@ -550,6 +558,8 @@ static int examine_log(my_string file_name, char **table_names) result=0; goto com_err; } + if (verbose) + printf_log("error: Didn't find row to update with mi_rrnd"); if (recover == 1 || result || find_record_with_key(curr_file_info,buff)) { @@ -564,6 +574,9 @@ static int examine_log(my_string file_name, char **table_names) { if (!recover) goto com_err; + if (verbose) + printf_log("error: Got result %d from mi_update instead of %d", + mi_result, result); if (mi_result) com_count[command][2]++; /* Mark error */ } @@ -576,15 +589,18 @@ static int examine_log(my_string file_name, char **table_names) { if (!recover) goto com_err; + if (verbose) + printf_log("error: Got result %d from mi_write instead of %d", + mi_result, result); if (mi_result) com_count[command][2]++; /* Mark error */ } - if (! recover && filepos != curr_file_info->isam->lastpos) + if (!recover && filepos != curr_file_info->isam->lastpos) { - printf("Warning: Wrote at position: %s, should have been %s", + printf("error: Wrote at position: %s, should have been %s", llstr(curr_file_info->isam->lastpos,llbuff), llstr(filepos,llbuff2)); - goto com_err; + goto end; } } } diff --git a/sql-bench/limits/mysql-3.23.cfg b/sql-bench/limits/mysql-3.23.cfg index fe724549bfb..3dde8039f1a 100644 --- a/sql-bench/limits/mysql-3.23.cfg +++ b/sql-bench/limits/mysql-3.23.cfg @@ -1,4 +1,4 @@ -#This file is automaticly generated by crash-me 1.48 +#This file is automaticly generated by crash-me 1.49 NEG=yes # update of column= -column Need_cast_for_null=no # Need to cast NULL for arithmetic @@ -36,7 +36,7 @@ constraint_check=no # Column constraints constraint_check_table=no # Table constraints constraint_null=yes # NULL constraint (SyBase style) crash_me_safe=no # crash me safe -crash_me_version=1.48 # crash me version +crash_me_version=1.49 # crash me version create_default=yes # default value for column create_default_func=no # default value function for column create_if_not_exists=yes # create table if not exists @@ -378,8 +378,9 @@ quote_ident_with_`=yes # ` as identifier quote quote_with_"=yes # Allows ' and " as string markers remember_end_space=no # Remembers end space in char() remember_end_space_varchar=no # Remembers end space in varchar() +rename_table=yes # rename table repeat_string_size=1048576 # return string size from function -right_outer_join=no # right outer join +right_outer_join=yes # right outer join rowid=auto_increment # Type for row id select_constants=yes # Select constants select_limit=with LIMIT # LIMIT number of rows @@ -387,7 +388,7 @@ select_limit2=yes # SELECT with LIMIT #,# select_string_size=1048565 # constant string size in SELECT select_table_update=no # Update with sub select select_without_from=yes # SELECT without FROM -server_version=MySQL 3.23.22 beta debug # server version +server_version=MySQL 3.23.25 beta debug # server version simple_joins=yes # ANSI SQL simple joins storage_of_float=round # Storage of float values subqueries=no # subqueries diff --git a/sql-bench/limits/mysql.cfg b/sql-bench/limits/mysql.cfg index fe724549bfb..3dde8039f1a 100644 --- a/sql-bench/limits/mysql.cfg +++ b/sql-bench/limits/mysql.cfg @@ -1,4 +1,4 @@ -#This file is automaticly generated by crash-me 1.48 +#This file is automaticly generated by crash-me 1.49 NEG=yes # update of column= -column Need_cast_for_null=no # Need to cast NULL for arithmetic @@ -36,7 +36,7 @@ constraint_check=no # Column constraints constraint_check_table=no # Table constraints constraint_null=yes # NULL constraint (SyBase style) crash_me_safe=no # crash me safe -crash_me_version=1.48 # crash me version +crash_me_version=1.49 # crash me version create_default=yes # default value for column create_default_func=no # default value function for column create_if_not_exists=yes # create table if not exists @@ -378,8 +378,9 @@ quote_ident_with_`=yes # ` as identifier quote quote_with_"=yes # Allows ' and " as string markers remember_end_space=no # Remembers end space in char() remember_end_space_varchar=no # Remembers end space in varchar() +rename_table=yes # rename table repeat_string_size=1048576 # return string size from function -right_outer_join=no # right outer join +right_outer_join=yes # right outer join rowid=auto_increment # Type for row id select_constants=yes # Select constants select_limit=with LIMIT # LIMIT number of rows @@ -387,7 +388,7 @@ select_limit2=yes # SELECT with LIMIT #,# select_string_size=1048565 # constant string size in SELECT select_table_update=no # Update with sub select select_without_from=yes # SELECT without FROM -server_version=MySQL 3.23.22 beta debug # server version +server_version=MySQL 3.23.25 beta debug # server version simple_joins=yes # ANSI SQL simple joins storage_of_float=round # Storage of float values subqueries=no # subqueries diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 711ea291e5d..eb3952be281 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -859,10 +859,11 @@ TABLE *reopen_name_locked_table(THD* thd, TABLE_LIST* table_list) key_length=(uint) (strmov(strmov(key,db)+1,table_name)-key)+1; pthread_mutex_lock(&LOCK_open); - if(open_unireg_entry(table, db, table_name, table_name) || - !(table->table_cache_key =memdup_root(&table->mem_root,(char*) key, - key_length))) + if (open_unireg_entry(table, db, table_name, table_name) || + !(table->table_cache_key =memdup_root(&table->mem_root,(char*) key, + key_length))) { + closefrm(table); pthread_mutex_unlock(&LOCK_open); DBUG_RETURN(0); } @@ -999,7 +1000,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, MEM_ROOT* glob_alloc; LINT_INIT(glob_alloc); - if(errno == ENOENT && + if (errno == ENOENT && (glob_alloc = my_pthread_getspecific_ptr(MEM_ROOT*,THR_MALLOC))) // Sasha: needed for replication // remember the name of the non-existent table diff --git a/sql/table.cc b/sql/table.cc index ac70387df5a..66a2ef767b0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -448,14 +448,13 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, keyinfo->key_length ? UNIQUE_KEY_FLAG : MULTIPLE_KEY_FLAG); if (i == 0) field->key_start|= ((key_map) 1 << key); - if (ha_option & HA_HAVE_KEY_READ_ONLY && - field->key_length() == key_part->length) - { - if (field->key_type() != HA_KEYTYPE_TEXT && - !(ha_option & HA_KEY_READ_WRONG_STR) && - !(keyinfo->flags & HA_FULLTEXT)) - field->part_of_key|= ((key_map) 1 << key); - } + if ((ha_option & HA_HAVE_KEY_READ_ONLY) && + field->key_length() == key_part->length && + field->type() != FIELD_TYPE_BLOB && + (field->key_type() != HA_KEYTYPE_TEXT || + (!(ha_option & HA_KEY_READ_WRONG_STR) && + !(keyinfo->flags & HA_FULLTEXT)))) + field->part_of_key|= ((key_map) 1 << key); if (!(key_part->key_part_flag & HA_REVERSE_SORT) && usable_parts == i) usable_parts++; // For FILESORT |