diff options
author | unknown <monty@hundin.mysql.fi> | 2001-07-18 23:34:04 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-07-18 23:34:04 +0300 |
commit | 0e66a78a4deda14424dc2585caaba201c7fa573b (patch) | |
tree | cebfda868fd3ee75917f75e851c2dddb068293de /mysys/thr_lock.c | |
parent | 2cbf3b9b532e048dbe3d42669bff539c5864236e (diff) | |
download | mariadb-git-0e66a78a4deda14424dc2585caaba201c7fa573b.tar.gz |
Upgrade TL_WRITE_CONCURRENT_INSERT to TL_WRITE_LOW_PRIORITY if
--low-priority-updates is used and the file has holes.
Docs/manual.texi:
Changelog
sql/sql_insert.cc:
Fixed that sleeptime is 0 for new insert delayed threads.
Diffstat (limited to 'mysys/thr_lock.c')
-rw-r--r-- | mysys/thr_lock.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c index cff4d3bbac8..7d86d0c9524 100644 --- a/mysys/thr_lock.c +++ b/mysys/thr_lock.c @@ -85,6 +85,7 @@ multiple read locks. my_bool thr_lock_inited=0; ulong locks_immediate = 0L, locks_waited = 0L; +enum thr_lock_type thr_upgraded_concurrent_insert_lock = TL_WRITE; /* The following constants are only for debug output */ #define MAX_THREADS 100 @@ -514,7 +515,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type) } } else if (lock_type == TL_WRITE_CONCURRENT_INSERT && ! lock->check_status) - data->type=lock_type= TL_WRITE; /* not supported */ + data->type=lock_type= thr_upgraded_concurrent_insert_lock; if (lock->write.data) /* If there is a write lock */ { @@ -556,7 +557,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type) { /* no scheduled write locks */ if (lock_type == TL_WRITE_CONCURRENT_INSERT && (*lock->check_status)(data->status_param)) - data->type=lock_type=TL_WRITE; /* Upgrade lock */ + data->type=lock_type= thr_upgraded_concurrent_insert_lock; if (!lock->read.data || (lock_type <= TL_WRITE_DELAYED && @@ -943,10 +944,10 @@ my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data) DBUG_ENTER("thr_upgrade_write_delay_lock"); pthread_mutex_lock(&lock->mutex); - if (data->type == TL_UNLOCK || data->type == TL_WRITE) /* Aborted */ + if (data->type == TL_UNLOCK || data->type >= TL_WRITE_LOW_PRIORITY) { pthread_mutex_unlock(&lock->mutex); - DBUG_RETURN(data->type == TL_UNLOCK); + DBUG_RETURN(data->type == TL_UNLOCK); /* Test if Aborted */ } check_locks(lock,"before upgrading lock",0); /* TODO: Upgrade to TL_WRITE_CONCURRENT_INSERT in some cases */ |