summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.fi>2001-05-17 00:46:50 +0300
committerunknown <monty@donna.mysql.fi>2001-05-17 00:46:50 +0300
commitebe9b6071a73d6953855fd0b2b5144b5b93194fb (patch)
treebfa83a61c2689e0f64e7be02d414bcf366c068a1 /mysys
parentc23dbe674d9cba45aa3ce0b87e50f83f3d2e9d52 (diff)
downloadmariadb-git-ebe9b6071a73d6953855fd0b2b5144b5b93194fb.tar.gz
Fixed bug when using MERGE on files > 4G
Fixed bug in SELECT db1.table.* FROM db1.table,db2.table Fixed bug in INSERT DELAYED when doing shutdown and a table was locked Changed that tmp_table_size =4G-1 means unlimited. Docs/manual.texi: Added new section about crashed MyISAM tables. Cleaned up subsections for InnoDB client/mysql.cc: Cleanup myisam/mi_rkey.c: Cleanup myisam/mi_search.c: Fixed wrong casts in debug messages myisammrg/myrg_rrnd.c: Fixed bug when using files > 4G mysys/getvar.c: Changed to use longlong to support arguments up to 4G mysys/thr_lock.c: Fix for delay insert sql/mysqld.cc: Increased default size for temporary tables sql/sql_base.cc: Fixed bug in SELECT db1.table.* FROM db1.table,db2.table sql/sql_insert.cc: Fixed bug in INSERT DELAYED when doing shutdown and a table was locked sql/sql_select.cc: Changed that tmp_table_size =4G-1 means unlimited.
Diffstat (limited to 'mysys')
-rw-r--r--mysys/getvar.c18
-rw-r--r--mysys/thr_lock.c2
2 files changed, 9 insertions, 11 deletions
diff --git a/mysys/getvar.c b/mysys/getvar.c
index 21cac7f0d61..703ccc4ddfa 100644
--- a/mysys/getvar.c
+++ b/mysys/getvar.c
@@ -56,7 +56,7 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars)
CHANGEABLE_VAR *var,*found;
my_string var_end;
const char *name;
- long num;
+ longlong num;
/* Skip end space from variable */
for (var_end=end ; end > str && isspace(var_end[-1]) ; var_end--) ;
@@ -87,7 +87,7 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars)
DBUG_RETURN(1);
}
- num=(long) atol(end); endchar=strend(end)[-1];
+ num=atoll(end); endchar=strend(end)[-1];
if (endchar == 'k' || endchar == 'K')
num*=1024;
else if (endchar == 'm' || endchar == 'M')
@@ -99,14 +99,12 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars)
fprintf(stderr,"Unknown prefix used for variable value '%s'\n",str);
DBUG_RETURN(1);
}
- if (num < (long) found->min_value)
- num=(long) found->min_value;
- else if ((unsigned long) num >
- (unsigned long) found->max_value)
- num=(long) found->max_value;
- *found->varptr=(long) ((ulong) (num-found->sub_size) /
- (ulong) found->block_size);
- (*found->varptr)*= (ulong) found->block_size;
+ if (num < (longlong) found->min_value)
+ num=(longlong) found->min_value;
+ else if (num > (longlong) (ulong) found->max_value)
+ num=(longlong) (ulong) found->max_value;
+ num=((num- (longlong) found->sub_size) / (ulonglong) found->block_size);
+ (*found->varptr)= (long) (num*(ulonglong) found->block_size);
DBUG_RETURN(0);
}
}
diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c
index ed21d466b35..74548b7fa12 100644
--- a/mysys/thr_lock.c
+++ b/mysys/thr_lock.c
@@ -370,7 +370,7 @@ static my_bool wait_for_lock(struct st_lock_list *wait, THR_LOCK_DATA *data,
do
{
pthread_cond_wait(cond,&data->lock->mutex);
- } while (data->cond == cond && !thread_var->abort);
+ } while (data->cond == cond && (!thread_var->abort || in_wait_list));
if (data->cond || data->type == TL_UNLOCK)
{