[Kde-pim] Akonadi and Plasma Active

Volker Krause vkrause at kde.org
Fri Jan 25 12:41:50 UTC 2013


On Thursday 24 January 2013 16:28:58 Kevin Krammer wrote:
> On Thursday, 2013-01-24, Marco Martin wrote:
> > On Thursday 24 January 2013, Marco Martin wrote:
> > > mQuery.prepare( statement ); at line 281 of querybuilder.cpp? seems to
> > > always return true
> > 
> > quite interesting finding:
> > in querybuilder.cpp, always there
> > 
> >  if ( QueryCache::contains( statement ) ) {
> >  
> >     mQuery = QueryCache::query( statement );
> >   
> >   } else {
> >   
> >     mQuery.prepare( statement );
> >     QueryCache::insert( statement, mQuery );
> >   
> >   }
> > 
> > if i make the else branch to always execute (ie never using the cache)
> > it's
> > still broken.
> > but, if i disable also QueryCache::insert( statement, mQuery );
> > so never inserting anything in the cache, all starts to work normally
> > again. ie even just saving those prepared queries somewhere makes it 
fail.
> 
> I don't know enough about the database stuff but it seems we'll have to
> deactivate prepared queries when sqlite is being used (assuming it works
> with PostgreSQL).

I know that pretty much the same approach works fine in an other project 
which uses Sqlite and PostgreSQL, so both can - in theory - handle prepared 
queries. For PostgreSQL it also doesn't seem to be causing issues with 
Akonadi, Till is using it on Mac for example. The special thing about Sqlite 
in Akonadi is the thread safety patches we had to add on top.

So, what I could imagine is an active query object causes a lock to be held 
somewhere, which would be released in the dtor. Obviously, anything like that 
breaks with the caching.

Marco's patch looks good to me, definitely the safe place to add this check. 
We'd need to check where the cache is used to see what other options we have 
(keep in mind the auto-generated code!).

regards,
Volker
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/active/attachments/20130125/36608201/attachment.sig>


More information about the Active mailing list