aboutsummaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2023-01-21 12:18:28 +0000
committerstephan <stephan@noemail.net>2023-01-21 12:18:28 +0000
commitcdcb84ef00da4a9b367e6536149634f633c41c71 (patch)
tree45826b1e478212df2dab3e0dacc8305a4f364c0a /src/util.c
parenta7c498599f917607542bcd7003c445723aba9127 (diff)
parent3fdb05e883ce0a6fc610474eaa37d79fd7ac67e1 (diff)
downloadsqlite-cdcb84ef00da4a9b367e6536149634f633c41c71.tar.gz
sqlite-cdcb84ef00da4a9b367e6536149634f633c41c71.zip
Merge trunk into wasi-patches branch.
FossilOrigin-Name: 6fc20d75d49310aedbc3351a4a5f1aa9ef5b4100501c7bfbe556aca2be2e44d7
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
index 23c6b1a66..632d317e3 100644
--- a/src/util.c
+++ b/src/util.c
@@ -176,6 +176,26 @@ void sqlite3ErrorWithMsg(sqlite3 *db, int err_code, const char *zFormat, ...){
}
/*
+** Check for interrupts and invoke progress callback.
+*/
+void sqlite3ProgressCheck(Parse *p){
+ sqlite3 *db = p->db;
+ if( AtomicLoad(&db->u1.isInterrupted) ){
+ p->nErr++;
+ p->rc = SQLITE_INTERRUPT;
+ }
+#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
+ if( db->xProgress && (++p->nProgressSteps)>=db->nProgressOps ){
+ if( db->xProgress(db->pProgressArg) ){
+ p->nErr++;
+ p->rc = SQLITE_INTERRUPT;
+ }
+ p->nProgressSteps = 0;
+ }
+#endif
+}
+
+/*
** Add an error message to pParse->zErrMsg and increment pParse->nErr.
**
** This function should be used to report any error that occurs while