Hello all,

I have found a bug which happens in both FTS2 and FTS3.

The bug happens when a trigger updates an FTS table: the insert ID gets trashed:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
create table one
(
    id integer not null primary key autoincrement,
    value text not null default ''
);

create virtual table search using fts2(one_id, data);

create trigger sound_insert after insert on one for each row
begin
    insert into search (one_id, data) values (new.id, new.value);
end;

create trigger one_update after update on one for each row
begin
    update search set data = random() where search.one_id=new.id;
end;

insert into one (value) values ("hello1");
select last_insert_rowid();   -- returns 1
insert into one (value) values ("hello2");
select last_insert_rowid(); -- returns 2
update one set value="hello3" where id=1;
select last_insert_rowid(); -- returns 3, but should return 2
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

My scheme is a bit more complex (more triggers and more tables), but
this is as far as I could reduce it.
Notice that if the search table gets updated via a trigger NOT
installed on the "one" table, the same problem occurs.

I found the problem described here:
http://www.mail-archive.com/sqlite-users@sqlite.org/msg30552.html
but there was no mention of a fix, nor was there a simple example
which reproduced the error.

Has this been fixed?

kindest,


 - Bram

-- 
http://freesound.iua.upf.edu
http://www.smartelectronix.com
http://www.musicdsp.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to