Am 23.01.2009 um 12:44 schrieb Dan:

>
> On Jan 23, 2009, at 5:37 PM, Jens Miltner wrote:
>
>> 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.
>
> Initially it looks like the ALWAYS(pExpr->pList) can be replaced
> with just pExpr->pList. The assert() is wrong.
>
> Dan.

Thanks.
-jens


_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to