SQLITE3_INTERRUPT(3)

NAME
sqlite3_interrupt, sqlite3_is_interrupted - interrupt a long-Running query

SYNOPSIS
#include <sqlite3.h>
void
sqlite3_interrupt(sqlite3*);
int
sqlite3_is_interrupted(sqlite3*);

DESCRIPTION
This function causes any pending database operation to abort and return at its earliest opportunity. This routine is typically called in response to a user action such as pressing "Cancel" or Ctrl-C where the user wants a long query operation to halt immediately.

It is safe to call this routine from a thread different from the thread that is currently running the database operation. But it is not safe to call this routine with a database connection that is closed or might close before sqlite3_interrupt() returns.

If an SQL operation is very nearly finished at the time when sqlite3_interrupt() is called, then it might not have an opportunity to be interrupted and might continue to completion.

An SQL operation that is interrupted will return SQLITE_INTERRUPT. If the interrupted SQL operation is an INSERT, UPDATE, or DELETE that is inside an explicit transaction, then the entire transaction will be rolled back automatically.

The sqlite3_interrupt(D) call is in effect until all currently running SQL statements on database connection D complete. Any new SQL statements that are started after the sqlite3_interrupt() call and before the running statement count reaches zero are interrupted as if they had been running prior to the sqlite3_interrupt() call. New SQL statements that are started after the running statement count reaches zero are not effected by the sqlite3_interrupt(). A call to sqlite3_interrupt(D) that occurs when there are no running SQL statements is a no-op and has no effect on SQL statements that are started after the sqlite3_interrupt() call returns.

The sqlite3_is_interrupted(D) interface can be used to determine whether or not an interrupt is currently in effect for database connection D.

IMPLEMENTATION NOTES
These declarations were extracted from the interface documentation at line 2702.

    SQLITE_API void sqlite3_interrupt(sqlite3*);
    SQLITE_API int sqlite3_is_interrupted(sqlite3*);

SEE ALSO
sqlite3(3), SQLITE_OK(3)