Commit 14a46479 authored by Mikael Ronstrom's avatar Mikael Ronstrom

BUG#59549, fix compiler error on Windows

parent 1ce30b73
...@@ -5995,7 +5995,7 @@ int TC_LOG_MMAP::open(const char *opt_name) ...@@ -5995,7 +5995,7 @@ int TC_LOG_MMAP::open(const char *opt_name)
{ {
pg->next=pg+1; pg->next=pg+1;
pg->waiters=0; pg->waiters=0;
pg->state=POOL; pg->state=PS_POOL;
mysql_mutex_init(key_PAGE_lock, &pg->lock, MY_MUTEX_INIT_FAST); mysql_mutex_init(key_PAGE_lock, &pg->lock, MY_MUTEX_INIT_FAST);
mysql_cond_init(key_PAGE_cond, &pg->cond, 0); mysql_cond_init(key_PAGE_cond, &pg->cond, 0);
pg->start=(my_xid *)(data + i*tc_log_page_size); pg->start=(my_xid *)(data + i*tc_log_page_size);
...@@ -6169,7 +6169,7 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid) ...@@ -6169,7 +6169,7 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
cookie= (ulong)((uchar *)p->ptr - data); // can never be zero cookie= (ulong)((uchar *)p->ptr - data); // can never be zero
*p->ptr++= xid; *p->ptr++= xid;
p->free--; p->free--;
p->state= DIRTY; p->state= PS_DIRTY;
/* to sync or not to sync - this is the question */ /* to sync or not to sync - this is the question */
mysql_mutex_unlock(&LOCK_active); mysql_mutex_unlock(&LOCK_active);
...@@ -6181,13 +6181,13 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid) ...@@ -6181,13 +6181,13 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
p->waiters++; p->waiters++;
/* /*
note - it must be while (), not do ... while () here note - it must be while (), not do ... while () here
as p->state may be not DIRTY when we come here as p->state may be not PS_DIRTY when we come here
*/ */
while (p->state == DIRTY && syncing) while (p->state == PS_DIRTY && syncing)
mysql_cond_wait(&p->cond, &LOCK_sync); mysql_cond_wait(&p->cond, &LOCK_sync);
p->waiters--; p->waiters--;
err= p->state == ERROR; err= p->state == PS_ERROR;
if (p->state != DIRTY) // page was synced if (p->state != PS_DIRTY) // page was synced
{ {
if (p->waiters == 0) if (p->waiters == 0)
mysql_cond_signal(&COND_pool); // in case somebody's waiting mysql_cond_signal(&COND_pool); // in case somebody's waiting
...@@ -6225,7 +6225,7 @@ int TC_LOG_MMAP::sync() ...@@ -6225,7 +6225,7 @@ int TC_LOG_MMAP::sync()
pool_last->next=syncing; pool_last->next=syncing;
pool_last=syncing; pool_last=syncing;
syncing->next=0; syncing->next=0;
syncing->state= err ? ERROR : POOL; syncing->state= err ? PS_ERROR : PS_POOL;
mysql_cond_broadcast(&syncing->cond); // signal "sync done" mysql_cond_broadcast(&syncing->cond); // signal "sync done"
mysql_cond_signal(&COND_pool); // in case somebody's waiting mysql_cond_signal(&COND_pool); // in case somebody's waiting
mysql_mutex_unlock(&LOCK_pool); mysql_mutex_unlock(&LOCK_pool);
......
...@@ -63,9 +63,9 @@ class TC_LOG_MMAP: public TC_LOG ...@@ -63,9 +63,9 @@ class TC_LOG_MMAP: public TC_LOG
{ {
public: // only to keep Sun Forte on sol9x86 happy public: // only to keep Sun Forte on sol9x86 happy
typedef enum { typedef enum {
POOL, // page is in pool PS_POOL, // page is in pool
ERROR, // last sync failed PS_ERROR, // last sync failed
DIRTY // new xids added since last sync PS_DIRTY // new xids added since last sync
} PAGE_STATE; } PAGE_STATE;
private: private:
......
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