...especially given that the results of sqlite3SchemaClear are being passed as a parameter and from the declaration, sqlite3SchemaClear doesn't return anything.
On Wed, Jan 25, 2012 at 7:53 AM, John Elrick <john.elr...@fenestra.com>wrote: > I started with the place where iGeneration was being changed and found > nothing out of the ordinary. I started an examination and noticed the > following. My "huh?" surrounds the question, why is sqlite3SchemaClear > being called if pBt is assigned? > > SQLITE_PRIVATE Schema *sqlite3SchemaGet(sqlite3 *db, Btree *pBt){ > Schema * p; > if( pBt ){ > p = (Schema *)sqlite3BtreeSchema(pBt, sizeof(Schema), > sqlite3SchemaClear); > }else{ > p = (Schema *)sqlite3DbMallocZero(0, sizeof(Schema)); > } > if( !p ){ > db->mallocFailed = 1; > }else if ( 0==p->file_format ){ > sqlite3HashInit(&p->tblHash); > sqlite3HashInit(&p->idxHash); > sqlite3HashInit(&p->trigHash); > sqlite3HashInit(&p->fkeyHash); > p->enc = SQLITE_UTF8; > } > return p; > } > > > On Tue, Jan 24, 2012 at 7:46 PM, Richard Hipp <d...@sqlite.org> wrote: > >> 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 >> > > > > -- > John Elrick > Fenestra Technologies > 540-868-1377 > > -- John Elrick Fenestra Technologies 540-868-1377 _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users