On 06/12/2015 05:45 PM, nomad at null.net wrote: > On Fri Jun 12, 2015 at 09:49:29AM +0000, Hick Gunter wrote: >> Seems the correct code is already generated... > Thanks Hick, that shows a bit more detail I didn't think to look for. > It seems that this only works for bind values, as the comparison and goto > statements aren't present when the term is defined at prepare time: > > .width 4 10 4 4 4 10 2 10 > EXPLAIN SELECT > x.id > FROM > x > WHERE > 1=0 > ; > > addr opcode p1 p2 p3 p4 p5 comment > ---- ---------- ---- ---- ---- ---------- -- ---------- > 0 Init 0 9 0 00 NULL > 1 Ne 2 7 1 51 NULL > 2 OpenRead 0 2 0 0 00 NULL > 3 Rewind 0 7 0 00 NULL > 4 Rowid 0 3 0 00 NULL > 5 ResultRow 3 1 0 00 NULL > 6 Next 0 4 0 01 NULL > 7 Close 0 0 0 00 NULL > 8 Halt 0 0 0 00 NULL > 9 Transactio 0 0 1 0 01 NULL > 10 TableLock 0 2 0 x 00 NULL > 11 Integer 1 1 0 00 NULL > 12 Integer 0 2 0 00 NULL > 13 Goto 0 1 0 00 NULL > > That makes me think that for the 1=0 case the scan occurs anyway?
I think the "Ne" at address 1 is the test in this case. Dan.