List:Maria Storage Engine« Previous MessageNext Message »
From:Guilhem Bichot Date:July 3 2008 8:09pm
Subject:Re: Where to add waiting for another thread
View as plain text  
Hello,

On Sat, Jun 28, 2008 at 05:57:18PM +0300, Michael Widenius wrote:

> Where to add wating for another thread in case of duplicate key error:
> 
> 
> In maria_write, under err: we have a loop where we add back all the
> keys we have changed.
> 
> Hm... we will have a big problem if we can't add back an unique key we
> just deleted.  To be safe, we should probably for now disable
> versioning if there is more than one unique key. I will fix and push
> that.
> 
> Anyway, what you should do:
> 
> In ma_write.c:w_search() we have the code:
> 
> 
>    if ((*keyinfo->get_key)(&tmp_key, page_flag, nod_flag, &keypos))
>       dup_key_pos= _ma_row_pos_from_key(&tmp_key);
> 
> Here you should do:
> 
>      info->dup_key_trid= _ma_trid_from_key(&tmp_key);
> 
> After the the loop 'while ( i-- > 0)' after all keys has been added
> back, you should add something like:
> 
>       if (wait_for_trid(info->dup_key_trid) == DEADLOCK)
>         save_errno= HA_ERR_LOCK_DEADLOCK;
> 
> 
> You should also delete the information in 'KNOWN_BUGS.txt' about the
> unique key problem.

Serg, do you understand: I see nothing about a unique key problem in
KNOWN_BUGS.txt, and I don't see how the wait you would add would
remove such problem, if such problem is the "big problem" above.

In this revision
monty@stripped
Monty disabled versioning if there is more than one unique index, I
think this is all related. Quite a severe limitation in my view,
interesting if Monty's text above suggests that you could lift it.

I'm quite confused myself.

-- 
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Guilhem Bichot <guilhem@stripped>
 / /|_/ / // /\ \/ /_/ / /__   MySQL France, Lead Software Engineer
/_/  /_/\_, /___/\___\_\___/   Bordeaux, France
       <___/   www.mysql.com   
Thread
Where to add waiting for another threadMichael Widenius28 Jun
  • Re: Where to add waiting for another threadGuilhem Bichot3 Jul
    • Re: Where to add waiting for another threadMichael Widenius5 Jul