The recent changes to FTS3 fixed a long standing problem with MATCH and 
AND operators combined. Take this schema:

drop table if exists myfts;
create virtual table myfts using fts3 (a);
insert into myfts values ('one');
insert into myfts values ('two');

This following query produced an "unable to use function MATCH in the 
requested context" error up to 3.6.21, IIRC. The workaround was to add a 
+ sign in front of the rowid. Since 3.6.22 it gladly works even without 
the + sign:

select * from myfts where (myfts MATCH 'one') and (rowid=1);

However, a similiar problem is still present using "or" instead "and". 
Even more problematic, the +rowid workaround no longer helps. Both these 
queries fail:

select * from myfts where (myfts MATCH 'one') or (rowid=1);
select * from myfts where (myfts MATCH 'one') or (+rowid=1);

Is this something that should be addressed?

sqlite-users mailing list

Reply via email to