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. -- Philip