On 15.03.2011 11:26, Philip Martin wrote:
> Branko Čibej <br...@e-reka.si> writes:
>
>> The restriction that you may not invoke a callback from within a sqlite
>> transaction remains. That's what the temporary results tables are for --
>> they live outside transactions on the main wc-db.
> I don't understand the temporary table approach.  Taking the
> temp__node_props_cache table as an example: it gets populated by a
> transaction and lives beyond that transaction.  The table then gets
> queried by a second transaction and the callbacks are made while that
> second transaction is in progress.  So callbacks are still being invoked
> from within a transaction.
>
> As far as I can see using a temporary table has made the overall "read
> properties" operation into one that modifies the database, to create the
> temporary table. I guess that by the time the callbacks are made the
> database write-lock has been dropped, but there would have been no
> write-lock if the temporary table were not used.

The temporary table is:

    * in a different database, so the read lock on it does not affect
      the main wc-db;
    * per-connection, so even the same process using a different
      database connection will not even see that temporary table.

-- Brane

Reply via email to