I am using 3.20.1 Yes, I noticed LIKE etc. It looked like it changed from a bitfield to an enum at some point. So, I guess I am one versionpoint shy of having NE and IS. OK, I'll check out at least 3.21 -- I was hesitant to upgrade just now because there were some shell.c issues I had with those embedded extensions relative to the implementation in 3.20, but this may compell me to do so. (I use shell.c in a special debug build of my product).
Thanks! -dave > -----Original Message----- > From: sqlite-users > [mailto:[email protected]] On > Behalf Of Hick Gunter > Sent: Monday, September 24, 2018 1:57 AM > To: 'SQLite mailing list' > Subject: Re: [sqlite] [EXTERNAL] virtual tables, xBestIndex, > pIdxInfo->aConstraint[].op, and 'NOT'... > > > Which version are you using? The set of constraint constants > was extended in versions 3.10 (LIKE, GLOB, REGEXP), 3.21 (NE, > IS*) and most recently 3.25 (FUNCTION) > > -----Ursprüngliche Nachricht----- > Von: sqlite-users > [mailto:[email protected]] Im > Auftrag von dave > Gesendet: Sonntag, 23. September 2018 23:26 > An: 'SQLite mailing list' <[email protected]> > Betreff: [EXTERNAL] [sqlite] virtual tables, xBestIndex, > pIdxInfo->aConstraint[].op, and 'NOT'... > > Folks, > > I cannot seem to find a means of filtering on negated > operators, e.g. <>, not null, not like, etc., in the > xBestIndex() method for virtual vables. As best as I can > tell, I cannot, unless there is something I am missing, hence > this inquiry. > > In a few virtual tables I have implemented, I have handled > the SQLITE_INDEX_CONSTRAINT_EQ, and the > SQLITE_INDEX_CONSTRAINT_LIKE (for > example) in the xBestIndex and xFilter. These code paths are > taken for queries of the form: > > select * from myvtab where mycol = 'xxx'; > select * from myvtab where mycol like 'xxx'; > > but /not/ for queries of the form: > > select * from myvtab where mycol <> 'xxx'; > select * from myvtab where mycol not like 'xxx'; > > I can work around these things for now with caveats in > documentation, but it does sometimes cause confusion to users. > > For example, in one case I have extended the syntax of LIKE . > That extension of syntax is invoked for a positive LIKE > constraint, but is bypassed for a negated one. I can work > around that with an extension function, but I won't get the > hints at record enumeration time that could reduce the > dataset from the underlying source. > > In other cases, I have some 'required' columns, which must be > present in a EQ constraints (usually they wind up being > parameters to a function call that generates the underlying > data). I emit an error when such constraints are missing, > but it can be confusing to users when: > > select * from myvtab where mycol <> 'xxx'; > > indicates that "you must have a constraint on 'mycol'" > > Lastly, some behavioural inconsistencies occur between these forms: > > select * from myvtab where mycol = null; > select * from myvtab where mycol is null; > > Since the first comes in as a constraint to xBestIndex, > whereas the second does not. > > Anyway, as I said, I can work around this for now, but I > thought I would ask > if: > > 1) is it true: xBestIndex doesn't get to see negated > predicates, or is it just somewhere that I have not found? > 2) if it's not possible, would it be worthwhile to consider > extending the operator set in some way to present the > negative clauses at some release in the future? > > Thanks for any info! > > -dave > > _______________________________________________ > sqlite-users mailing list > [email protected] > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > ___________________________________________ > Gunter Hick | Software Engineer | Scientific Games > International GmbH | Klitschgasse 2-4, A-1130 Vienna | FN > 157284 a, HG Wien, DVR: 0430013 | (O) +43 1 80100 - 0 > > May be privileged. May be confidential. Please delete if not > the addressee. > _______________________________________________ > sqlite-users mailing list > [email protected] > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

