Hi everyone,

I'm hoping someone can help with a strange issue I'm having.  I have a 
SQLite application that runs a some modest SQL scripts (~750KB) to 
create and populate a database.  For the same exact script, sometimes it 
works perfectly and other times it fails with a SQLITE_ERROR.  When it 
fails, it fails on a different statement each time, so it does not seem 
to be a problem with the SQL script itself.

Upon further testing, I noticed that it seems to work when my system is 
otherwise idle, but if something else is going on, it fails.  For 
instance, if I perform a task like launching Firefox while the script is 
running, it errors out every single time.

My application is single-threaded, and the basic pseudo-code is as follows:

repeat
  sqlite3_prepare(db, sql, -1, p, sql);
  repeat
    s := sqlite3_step(p);
  until
    s in (SQLITE_DONE, SQLITE_ERROR, SQLITE_MISUSE);
  sqlite3_finalize(p);
until
  sql is null;

As it should, sqlite3_prepare() provides a single statement to be 
executed, and sqlite3_step() performs the execution of the single 
statement.  The error specifically occurs in sqlite3_step().

Does anyone have any ideas of why this is occurring?  My best guess is 
that it is a thread-safety issue inside SQLite... the statements are 
being executed asynchronously and failing when one statement does not 
execute fast enough.  I am running the pre-compiled build for Windows 
that I downloaded right from the sqlite website.  Does anyone know what 
threading mode it was compiled with and whether or not that would be a 
problem?  Any other ideas?

Thanks so much in advance!

Cheers,
Christopher
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to