ext/fts3.c in the current code fixes the fts2-vs-vacuum problem by
adding "docid INTEGER PRIMARY KEY" to the %_content table.  This
becomes an alias for rowid, and thus causes vacuum to not renumber
rowids.  It is safe to add that column because the other columns in
%_content are constructed such that even the following:

CREATE VIRTUAL TABLE t USING fts3(docid);

will work fine.

I'm considering whether I should take it one step further, and make
docid a reserved column name for fts3 tables.  My rational is that
fts3 rowids are not quite the same as the rowids of regular tables -
in fact, some use-cases would encourage users of fts3 to use rowids in
exactly the way that fts2 was inappropriately using them!

docid would be a hidden column, like rowid.  That means that you'll
only see the column in SELECT and INSERT statements if you explicitly
reference it.  It would operate WRT rowid exactly as an INTEGER
PRIMARY KEY column would.

Opinions?

-scott

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to