Hello,
On 2017-02-27 11:41, Dan Kennedy wrote:
CREATE VIRTUAL TABLE f USING fts3(x);
BEGIN;
INSERT INTO f VALUES('one');
INSERT INTO f VALUES('two');
INSERT INTO f VALUES('three');
INSERT INTO f VALUES('four');
COMMIT;
INSERT INTO f VALUES('five');
SELECT last_insert_rowid();
The last SELECT statement returns integer value 2, not 5 as you would
expect.
Indeed, something opposite to the original problem: works (FTS5: not so)
fine until you use transactions.
Not sure if this is something we can fix or not.
In FTS5 ``*_data'' is updated by ``REPLACE ...''. It is impossible to
disable updating of lastRowid. There are commands OP_Insert with P5 |=
OPFLAG_LASTROWID hardcoded. Such late update is bypassing (or
overwriting) virtual table xUpdate's ``pRowid'' feature.
IMHO, the problem requires redesigning of FTSes or SQLite core (for
example by allowing to disable lastRowid's updating temporarily). I'm
not as fluent in SQLite as to see an ``append-one-line'' solution.
-- best regards
Cezary H. Noweta
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users