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  

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 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
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