[Dovecot] quota dict play nice with existing tables

Miha Vrhovnik miha.vrhovnik at cordia.si
Tue Sep 14 20:56:41 EEST 2010


"Timo Sirainen" <tss at iki.fi> wrote on 14.9.2010 19:24:14:

>On Tue, 2010-09-14 at 19:08 +0200, Miha Vrhovnik wrote:
>> When removing/receiving new message and same in case of doveadm recalc. 
>> SELECT with key..
>>   if not found
>>     INSERT
>>   else
>>     UPDATE
>
>I don't think this kind of code exists anywhere? 
I was being hypothetical.

>The actual row updating code works with INSERT INTO .. ON DUPLICATE KEY
>UPDATE .. with MySQL, and with INSERT+trigger with PostgreSQL.
>
>> unless I'm missing something upper one could be optimized to
>> UPDATE
>>   if changed rows < 1 then
>>    INSERT
>> 
>> which wouldn't require the SELECT and would also spare the trigger when using postresql.
>
>The trigger is there to avoid race conditions:
>
>1) two processes try to add the row at the same time
>2) one process tries to update the row when another had just deleted it
It seems that I missed the race conditions.

Have decided that it would be best to give the Dovecot dedicated table and then add DELETE trigger and modify insert/update one to also update the values in my table.

Regards,
Miha

-- 
It's time to get rid of your current e-mail client ...
... and start using si.Mail.

It's small & free. ( http://www.simail.si/ )


More information about the dovecot mailing list