Subject: Re: [bug#33210] Cuirass: Use a SQLite in single-thread mode

From: Danny Milosavljevic <[email-masked]>
Date: Tue, 6 Nov 2018 12:20:36 +0100

Hi Clément,

On Tue, 06 Nov 2018 01:50:11 +0100
Clément Lassieur <[email-masked]> wrote:

> > This is not supposed to happen in relational database systems.  The reason
> > why it happens here is because we use the same transaction (session) for
> > both the updates done by the evaluator and the queries done by the web
> > interface.  It would be much better if the queries by the web interface
> > had their own transaction.  It was fine before but in some refactoring,
> > "evaluate" ceased to be an external program and I didn't notice what
> > happened to it.  
> 
> Yes, I know, but I remember that I told you[1] that there was an easy
> (one line) fix for this. :-)

That would really only be a workaround (arguably still better than what we
have now - which is basically you ask for a banana and I give you an apple
- what if other procedures in cuirass assume it's a banana? :) ).

We would be doing the work that SQLite would have done, but we'd do it in a bad
way (by blocking everyone else).

It's not really useful to undo all the progress relational databases have made.

If we had multiple transactions in progress touching the same row, SQLite would
use MVCC to hold diverging copies of the same row at the same time, blocking
nobody.