[Dovecot] Custom sql query for keeping quota with dict-sql

Timo Sirainen tss at iki.fi
Fri Jun 3 16:47:54 EEST 2011


On Fri, 2011-06-03 at 15:17 +0200, Marcin Mirosław wrote:
> W dniu 03.06.2011 13:51, Timo Sirainen pisze:
> Helo Timo!
> > You can't define your own SQL queries for dict quota. Besides being able
> > to do such query, there's the problem that when recalculating quota it's
> > done by deleting a row and inserting it back. You wouldn't want to do
> > that for your users table. 
> Yes...:)
> I don't know internals in dovecot, mayby it will be nonsensical what
> i'll say. Could it be better to set NULL instead delete of row?

The problem is that updates don't work then:

mails=> insert into foo values (null);
mails=> update foo set bar=bar+1;
UPDATE 1
mails=> select * from foo;
 bar 
-----
    
(1 row)

The whole problem is how to atomically increase/decrease a value in SQL,
when the row may or may not exist.

Of course it could be assumed that the row always exists and this would
become a lot simpler. Hmm. That would basically require a whole new dict
backend that used different SQL queries.

> Or let user can define own queries e.g.:
> DICT_QUOTA_DEL= ...
> DICT_QUOTA_INSERT=
> DICT_QUOTA_OTHER_ACTIONS=

It's not that simple.



More information about the dovecot mailing list