"Barrass, Richard" <[EMAIL PROTECTED]> wrote: > Thanks for the help. > > I took a little while to extract our standard out ( It's multiplexed > with the test harness results at current ). > > Here's the trace:- > > VDBE Execution Trace: > SQL: [PRAGMA vdbe_trace=ON] > 0 Expire 1 0 > 1 Halt 0 0 > VDBE Execution Trace: > SQL: [SELECT * FROM sqlite_master] > 0 Goto 0 14 > 14 Transaction 0 0 > 15 VerifyCookie 0 1 > 16 Goto 0 1 > 1 Integer 0 0 # sqlite_master > Stack: i:619574286855700480
Hmmm.... Where is that big number coming from? The hex value is 0x8992b8800000000. In other words, it appears to set the lower 32-bits to zero correctly, but leave the upper 32-bits in a random state. Here is the code that does the setting: case OP_Integer: { pTos++; pTos->flags = MEM_Int; pTos->i = pOp->p1; break; } The pOp->p1 value is 0 and is a 32-bit integer. pTos->i is a 64-bit integer. More and more I suspect that your compiler is generating incorrect code for assigning shorter integer values into a 64-bit integer. Perhaps you will get better results on ARM if you recompile using only 32-bit integers. (Do you need 64-bit integers in your application? Probably not...) Recompile with -DSQLITE_INT64_TYPE=int and -DSQLITE_32BIT_ROWID=1 and see if that doesn't help. Note that you must use the -DSQLITE_INT64_TYPE=int option on any application that includes the <sqlite3.h> header file as well. -- D. Richard Hipp <[EMAIL PROTECTED]> ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------