The schema is as follows : create table employee (name text,age int); create table location (name text,addr text); create table company (name text,cname text);
Thanks On Fri, Sep 19, 2014 at 10:13 AM, Richard Hipp <d...@sqlite.org> wrote: > On Fri, Sep 19, 2014 at 12:35 AM, Prakash Premkumar < > prakash.p...@gmail.com> > wrote: > > > Let's take this example > > > > explain select * from employee,company,location where location.name= > > company.name and location.name=employee.name; > > > > Also please include the schema for your database. > > > > > > > addr opcode p1 p2 p3 p4 p5 comment > > > > ---- ------------- ---- ---- ---- ------------- -- ------------- > > > > 0 Init 0 46 0 00 Start at 46 > > > > 1 OpenRead 0 2 0 2 00 root=2 iDb=0; > > employee > > > > 2 OpenRead 2 3 0 2 00 root=3 iDb=0; > > location > > > > 3 OpenRead 1 4 0 2 00 root=4 iDb=0; > > company > > > > 4 Explain 0 0 0 SCAN TABLE employee 00 > > > > > > 5 Rewind 0 44 0 00 > > > > 6 Once 0 15 0 00 > > > > 7 OpenAutoindex 3 3 0 k(3,nil,nil,nil) 00 nColumn=3; > > for location > > > > 8 Rewind 2 15 0 00 > > > > 9 Column 2 0 2 00 r[2]= > > location.name > > > > 10 Column 2 1 3 00 > > r[3]=location.addr > > > > 11 Rowid 2 4 0 00 r[4]=rowid > > > > 12 MakeRecord 2 3 1 00 > > r[1]=mkrec(r[2..4]) > > > > 13 IdxInsert 3 1 0 10 key=r[1] > > > > 14 Next 2 9 0 03 > > > > 15 Explain 0 1 2 SEARCH TABLE location USING > > AUTOMATIC COVERING INDEX (name=?) 00 > > > > 16 Column 0 0 5 00 r[5]= > > employee.name > > > > 17 IsNull 5 43 0 00 if r[5]==NULL > > goto 43 > > > > 18 SeekGE 3 43 5 1 00 key=r[5] > > > > 19 IdxGT 3 43 5 1 00 key=r[5] > > > > 20 Once 1 29 0 00 > > > > 21 OpenAutoindex 4 3 0 k(3,nil,nil,nil) 00 > nColumn=3; > > for company > > > > 22 Rewind 1 29 0 00 > > > > 23 Column 1 0 2 00 r[2]= > > company.name > > > > 24 Column 1 1 3 00 > > r[3]=company.cname > > > > 25 Rowid 1 4 0 00 > r[4]=rowid > > > > > > 26 MakeRecord 2 3 1 00 > > r[1]=mkrec(r[2..4]) > > > > 27 IdxInsert 4 1 0 10 key=r[1] > > > > > > 28 Next 1 23 0 03 > > > > 29 Explain 0 2 1 SEARCH TABLE company USING > > AUTOMATIC COVERING INDEX (name=?) 00 > > > > 30 Column 3 0 6 00 r[6]= > > location.name > > > > 31 IsNull 6 42 0 00 if > r[6]==NULL > > goto 42 > > > > 32 SeekGE 4 42 6 1 00 key=r[6] > > > > 33 IdxGT 4 42 6 1 00 key=r[6] > > > > > > 34 Copy 5 7 0 00 r[7]=r[5] > > > > > > 35 Column 0 1 8 00 > > r[8]=employee.age > > > > 36 Column 4 0 9 00 r[9]= > > company.name > > > > 37 Column 4 1 10 00 > > r[10]=company.cname > > > > 38 Copy 6 11 0 00 > r[11]=r[6] > > > > > > 39 Column 3 1 12 00 > > r[12]=location.addr > > > > 40 ResultRow 7 6 0 00 > > output=r[7..12] > > > > 41 Next 4 33 0 00 > > > > 42 Next 3 19 0 00 > > > > 43 Next 0 6 0 01 > > > > 44 Close 0 0 0 00 > > > > 45 Halt 0 0 0 00 > > > > 46 Transaction 0 0 3 0 01 > > > > 47 TableLock 0 2 0 employee 00 iDb=0 root=2 > > write=0 > > > > 48 TableLock 0 3 0 location 00 iDb=0 root=3 > > write=0 > > > > 49 TableLock 0 4 0 company 00 iDb=0 root=4 > > write=0 > > > > 50 Goto 0 1 0 00 > > > > > > How's the register for the highlighted opcode allocated and how does the > > virtual machine remember this allocation ? > > > > Thanks for your help > > > > On Fri, Sep 19, 2014 at 9:46 AM, Richard Hipp <d...@sqlite.org> wrote: > > > > > On Fri, Sep 19, 2014 at 12:10 AM, Prakash Premkumar < > > > prakash.p...@gmail.com> > > > wrote: > > > > > > > Thanks for your reply. I would like to know how the register > allocation > > > > decision is made and the part of the code which does it . can you > > please > > > > help me find that? Thanks > > > > > > > > > > Which register. > > > > > > Show me a specific VDBE program and a specific instruction in that > > program > > > and a specific operand on that instruction, and I can point you to the > > > place in the code where that register is allocated. > > > > > > > > > -- > > > D. Richard Hipp > > > d...@sqlite.org > > > _______________________________________________ > > > sqlite-users mailing list > > > sqlite-users@sqlite.org > > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > > > > -- > D. Richard Hipp > d...@sqlite.org > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users