On Tue, Jan 24, 2012 at 7:37 PM, John Elrick <john.elr...@fenestra.com>wrote:

>
> It appears that the value is set here:
>
>  u.av.pBt = db->aDb[pOp->p1].pBt;
>  if( u.av.pBt ){
>    sqlite3BtreeGetMeta(u.av.pBt, BTREE_SCHEMA_VERSION, (u32 *)&u.av.iMeta);
>    u.av.iGen = db->aDb[pOp->p1].pSchema->iGeneration;
>  }else{
>    u.av.iGen = u.av.iMeta = 0;
>  }
>
>
> I added a log trace to the else condition and it never fired off, so
> something is causing db->aDb[pOp->p1].pSchema->iGeneration to change
> relative to pOp->p3.  Give me some guidance as to where to dig and I'll be
> glad to do so
>

iGeneration changes in only one place in the code:
http://www.sqlite.org/src/artifact/5069f2248?ln=431

May I recommend that you put a printf() before this line

   http://www.sqlite.org/src/artifact/fc1b97fa6816?ln=3022

And have that printf display the following values:

   db  (rendered using %p)
   pOp->p1  (using %d)
   db->aDb[pOp->p1].pSchema  (using %p)
   db->aDb[pOp->p1].pSchema->schema_cookie  (using %d)
   db->aDb[pOp->p1].pSchema->iGeneration (using %d)
   iMeta  (using %d)
   pOp->p2  (using %d)
   pOp->p3  (using %d)
   p->zSql  (using %s)

And then also add a printf on the line above where iGeneration changes and
display its new value every time it changes.




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

Reply via email to