On Tue, Jan 24, 2012 at 7:37 PM, John Elrick <[email protected]>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
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users