Commit aa736473 authored by unknown's avatar unknown

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into serg.mylan:/usr/home/serg/Abk/mysql-5.0

parents c885fb04 bcc1ecd3
...@@ -72,7 +72,6 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, ...@@ -72,7 +72,6 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
} }
LINT_INIT(dfile); LINT_INIT(dfile);
LINT_INIT(file); LINT_INIT(file);
pthread_mutex_lock(&THR_LOCK_myisam);
errpos=0; errpos=0;
options=0; options=0;
bzero((byte*) &share,sizeof(share)); bzero((byte*) &share,sizeof(share));
...@@ -135,7 +134,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, ...@@ -135,7 +134,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
pack_reclength++; pack_reclength++;
min_pack_length++; min_pack_length++;
/* We must test for 257 as length includes pack-length */ /* We must test for 257 as length includes pack-length */
if (test(rec->length >= 257)) if (test(rec->length >= 257))
{ {
long_varchar_count++; long_varchar_count++;
pack_reclength+= 2; /* May be packed on 3 bytes */ pack_reclength+= 2; /* May be packed on 3 bytes */
...@@ -542,6 +541,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, ...@@ -542,6 +541,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
if (! (flags & HA_DONT_TOUCH_DATA)) if (! (flags & HA_DONT_TOUCH_DATA))
share.state.create_time= (long) time((time_t*) 0); share.state.create_time= (long) time((time_t*) 0);
pthread_mutex_lock(&THR_LOCK_myisam);
if (ci->index_file_name) if (ci->index_file_name)
{ {
fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4); fn_format(filename, ci->index_file_name,"",MI_NAME_IEXT,4);
......
...@@ -401,7 +401,7 @@ void end_thr_alarm(my_bool free_structures) ...@@ -401,7 +401,7 @@ void end_thr_alarm(my_bool free_structures)
{ {
DBUG_ENTER("end_thr_alarm"); DBUG_ENTER("end_thr_alarm");
if (alarm_aborted != 1) /* If memory not freed */ if (alarm_aborted != 1) /* If memory not freed */
{ {
pthread_mutex_lock(&LOCK_alarm); pthread_mutex_lock(&LOCK_alarm);
DBUG_PRINT("info",("Resheduling %d waiting alarms",alarm_queue.elements)); DBUG_PRINT("info",("Resheduling %d waiting alarms",alarm_queue.elements));
alarm_aborted= -1; /* mark aborted */ alarm_aborted= -1; /* mark aborted */
...@@ -415,13 +415,10 @@ void end_thr_alarm(my_bool free_structures) ...@@ -415,13 +415,10 @@ void end_thr_alarm(my_bool free_structures)
if (free_structures) if (free_structures)
{ {
struct timespec abstime; struct timespec abstime;
/*
The following test is just for safety, the caller should not
depend on this
*/
DBUG_ASSERT(!alarm_queue.elements); DBUG_ASSERT(!alarm_queue.elements);
/* Wait until alarm thread dies */
/* Wait until alarm thread dies */
set_timespec(abstime, 10); /* Wait up to 10 seconds */ set_timespec(abstime, 10); /* Wait up to 10 seconds */
while (alarm_thread_running) while (alarm_thread_running)
{ {
...@@ -429,16 +426,13 @@ void end_thr_alarm(my_bool free_structures) ...@@ -429,16 +426,13 @@ void end_thr_alarm(my_bool free_structures)
if (error == ETIME || error == ETIMEDOUT) if (error == ETIME || error == ETIMEDOUT)
break; /* Don't wait forever */ break; /* Don't wait forever */
} }
if (!alarm_queue.elements) delete_queue(&alarm_queue);
alarm_aborted= 1;
pthread_mutex_unlock(&LOCK_alarm);
if (!alarm_thread_running) /* Safety */
{ {
delete_queue(&alarm_queue); pthread_mutex_destroy(&LOCK_alarm);
alarm_aborted= 1; pthread_cond_destroy(&COND_alarm);
pthread_mutex_unlock(&LOCK_alarm);
if (!alarm_thread_running) /* Safety */
{
pthread_mutex_destroy(&LOCK_alarm);
pthread_cond_destroy(&COND_alarm);
}
} }
} }
else else
......
...@@ -255,7 +255,10 @@ static void start_and_monitor_instance(Instance_options *old_instance_options, ...@@ -255,7 +255,10 @@ static void start_and_monitor_instance(Instance_options *old_instance_options,
log_info("starting instance %s", instance_name_buff); log_info("starting instance %s", instance_name_buff);
if (start_process(old_instance_options, &process_info)) if (start_process(old_instance_options, &process_info))
{
instance_map->unlock();
return; /* error is logged */ return; /* error is logged */
}
/* allow users to delete instances */ /* allow users to delete instances */
instance_map->unlock(); instance_map->unlock();
......
...@@ -1069,9 +1069,9 @@ int decimal2longlong(decimal_t *from, longlong *to) ...@@ -1069,9 +1069,9 @@ int decimal2longlong(decimal_t *from, longlong *to)
} }
} }
/* boundary case: 9223372036854775808 */ /* boundary case: 9223372036854775808 */
if (unlikely(from->sign==0 && x < 0 && -x < 0)) if (unlikely(from->sign==0 && x == LONGLONG_MIN))
{ {
*to= -1-x; *to= LONGLONG_MAX;
return E_DEC_OVERFLOW; return E_DEC_OVERFLOW;
} }
...@@ -2675,7 +2675,8 @@ void test_pr(const char *s1, int prec, int dec, char filler, const char *orig, ...@@ -2675,7 +2675,8 @@ void test_pr(const char *s1, int prec, int dec, char filler, const char *orig,
int slen= sizeof(s2); int slen= sizeof(s2);
int res; int res;
sprintf(s, "'%s', %d, %d, '%c'", s1, prec, dec, filler); sprintf(s, filler ? "'%s', %d, %d, '%c'" : "'%s', %d, %d, '\\0'",
s1, prec, dec, filler);
end= strend(s1); end= strend(s1);
string2decimal(s1, &a, &end); string2decimal(s1, &a, &end);
res= decimal2string(&a, s2, &slen, prec, dec, filler); res= decimal2string(&a, s2, &slen, prec, dec, filler);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment