summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authormonty@donna.mysql.fi <>2001-05-17 00:46:50 +0300
committermonty@donna.mysql.fi <>2001-05-17 00:46:50 +0300
commit2ba0846a60ac43e1ef477bdfd95c37901b6c7fe7 (patch)
treebfa83a61c2689e0f64e7be02d414bcf366c068a1 /mysys
parentb708df267d6fb180368f84405fbc06006a318f55 (diff)
downloadmariadb-git-2ba0846a60ac43e1ef477bdfd95c37901b6c7fe7.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.
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)
{