Sairam Gaddam wrote:
> sql="create table em(name text primary key,age text,pts text);"\
>     "create table l(name text primary key,fame text);";
>
> sql = "select * from em,l where l.fame=em.age";
>
>    4 Once             0   13    0               00
>    5 OpenAutoindex    2    3    0 k(3,nil,nil,nil) 00
>    6 Rewind           1   13    0               00
>    7 Column           1    1    2               00
>    8 Column           1    0    3               00
>    9 Rowid            1    4    0               00
>   10 MakeRecord       2    3    1               00
>   11 IdxInsert        2    1    0               10
>   12 Next             1    7    0               03
>   13 Column           0    1    5               00
>   14 IsNull           5   24    0               00
>   15 SeekGE           2   24    5 1             00
>   16 IdxGT            2   24    5 1             00
>   17 Column           0    0    6               00
>   18 Copy             5    7    0               00
>   19 Column           0    2    8               00
>   20 Column           2    1    9               00
>   21 Column           2    0   10               00
>   22 ResultRow        6    5    0               00
>   23 Next             2   16    0               00
>   24 Next             0    4    0               01
>   ...
>
> whenever the condition in the where clause is false, the program jumps to
> the instruction pointed by p2 of SeekGe

Yes.

> but if the condition proves to be false for the row 1 of both the
> tables, then the program jumps to line 24(in this case) which
> corresponds to outer table and takes the second row of outer table
> for next iteration, then when will the program fetch 1st row
> of table-1 and remaining rows of table-2 ???

In the join loop, this VDBE program does not fetch any rows from the
second table:

  explain query plan select * from em,l where l.fame=em.age;
  0|0|0|SCAN TABLE em
  0|1|1|SEARCH TABLE l USING AUTOMATIC COVERING INDEX (fame=?)

All accesses to "l" are actually handled by the temporary index (which
is created by instructions 5..12).  One index search is enough to
determine whether a fame value exists.


Regards,
Clemens

Reply via email to