Hello,

I have the following process (roughly) on a 3.xx database:

== Start of process ==
1)  sqlite_prepare (an insert statement which is then used many times)
2)  loop to insert data (thousands of iterations)
  sqlite_reset / sqlite_bindxxx / sqlite_step
3)  'ATTACH DATABASE secondary'
  do some processing on attached database
'DETACH DATABASE secondary'
4)  sqlite_reset on prepared query from step 1
  at this point I get an SQLITE_SCHEMA error so I do an sqlite_finalize of
the old prepared statement, and sqlite_prepare a new statement - which is
the same as step 1.
5) sqlite_reset - return value is SQLITE_OK
6) sqlite_bindxxx - they all seem to work OK.
7) sqlite_step - ERROR!!  Return code is 1, and a call to sqlite_errmsg
gives the result "not an error".
== End of process ==

== More information ==
=>  In step 1 three inserts are prepared.
=>  In step 2 the three prepared statement are interleaved. (reset1, bind1,
step1, reset2, bind2, step2 etc)
=>  Steps 4, 5, 6, 7 are an expansion of step 2 - it's the same function
call.
=>  In step 4 only the first of the three queries is re-prepared before the
error in step 7.

BUT, the error is sort-of self-fixing!
So this is my program, and what happens:
{
  sqlite_open()
  Step1() - Success
  Step2() - Success
  Step2() - Success
  Step3() - Success
  Step2() - SQLITE_SCHEMA on reset1, so finalize1 prepare1 then error_code 1
on step1 and exit
  Step2() - SQLITE_SCHEMA on reset2, so finalize2 prepare2 then error_code 1
on step2 and exit
  Step2() - SQLITE_SCHEMA on reset3, so finalize3 prepare3 then error_code 1
on step3 and exit
  Step2() - Success
  Step2() - Success
  Step3() - Success
  Step2() - SQLITE_SCHEMA on reset1, so finalize1 prepare1 then error_code 1
on step1 and exit
  Step2() - SQLITE_SCHEMA on reset2, so finalize2 prepare2 then error_code 1
on step2 and exit
  Step2() - SQLITE_SCHEMA on reset3, so finalize3 prepare3 then error_code 1
on step3 and exit
  Step2() - Success
  Step2() - Success
}

Step2 inserts the same data everytime.

So what "officially" should I do with an error code of 1 as the result of an
sqlite_step?

Regards,
Carl.


Reply via email to