Hi,

I filed ticket #3602 a couple of days ago:

Essentially, when using empty test sets ("IN ()" / "NOT IN ()") in the  
WHERE expression of a query, an assert() fires inside the bestIndex  
function. The assert expects pExpr->pList to be non-NULL and the code  
actually checks for this to be non-NULL, so apart from the assert()  
firing, nothing bad seems to happen.
[Just in case you're going to ask why we would use empty test sets -  
these are queries generated by code]

Since we're using the debug build of sqlite in our debug builds of our  
app, we stumble across this this assert() firing every now and then,  
which is somewhat annoying.
While I could remove the assert in our code, I'm hesitating to do so,  
because my assumption is the assert() is there for a reason...
Unfortunately, I don't know the parser well enough to decide whether  
this assert() is something that's pointing out potential trouble or  
whether it's just an incorrect assumption at this point.

Can somebody with more knowledge of the parse please check whether  
this assert() is correct or whether either a NULL pExpr->pList is ok  
at this point or maybe pExpr->pList should be an empty list when  
passing an empty test sets (it's quick and easy to reproduce - see the  
ticket description)?

I'd appreciate some input on the severity of this assertion.

Thanks,
-jens


_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to