Good afternoon,

Here is an issue I started to experience after upgrading from SQLite 
3.7.5 to 3.7.6 involving a trigger I have on a database table.

The table with the trigger is a 2-column table with the following 
trigger installed to it:

CREATE TABLE [table_a] (
   [col_a] INTEGER NOT NULL PRIMARY KEY,
   [col_b] INT64 NOT NULL);

CREATE TRIGGER [RemoveOffers]
BEFORE DELETE
ON [table_a]
BEGIN
DELETE FROM table_b
WHERE col_a IN
(SELECT col_a FROM table_c WHERE col_b = old.col_a);
END;

On 3.7.5, a single delete statement from this table executed almost 
instantaneously even on the largest sets of data it would be clearing 
out. However, after upgrading to 3.7.6 and 3.7.6.1, this isn't the case. 
To have the same performance as I did on 3.7.5, I have to use the 
trigger query separately -- a delete statement on table_a and the delete 
statement on table_b separately.

Again, as a trigger this statement takes seconds to run -- one run took 
as much as 15 seconds to execute. As separate delete statements, it 
takes a fraction of a second, similar to how it ran as a trigger in 3.7.5.

I've also noticed issues where queries with an IN clause (like the 
trigger above) took significantly longer to execute than before, but 
that was cleared up by adding some more indexes to the table 
definitions. But even adding additional indexes didn't help the 
performance of this trigger running as a trigger.

So this begs the question: what changed?

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to