Skip to content

Commit 7b24375

Browse files
committed
Replaced BEGIN/COMMIT inside cloudsync_payload_apply with SAVEPOINT/RELEASE
1 parent 6ab360d commit 7b24375

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/cloudsync.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,7 +2153,7 @@ int cloudsync_payload_apply (sqlite3_context *context, const char *payload, int
21532153

21542154
// apply payload inside a transaction
21552155
sqlite3 *db = sqlite3_context_db_handle(context);
2156-
int rc = sqlite3_exec(db, "BEGIN TRANSACTION;", NULL, NULL, NULL);
2156+
int rc = sqlite3_exec(db, "SAVEPOINT cloudsync_payload_apply;", NULL, NULL, NULL);
21572157
if (rc != SQLITE_OK) {
21582158
dbutils_context_result_error(context, "Error on cloudsync_payload_apply: unable to start a transaction (%s).", sqlite3_errmsg(db));
21592159
if (clone) cloudsync_memory_free(clone);
@@ -2204,9 +2204,9 @@ int cloudsync_payload_apply (sqlite3_context *context, const char *payload, int
22042204
stmt_reset(vm);
22052205
}
22062206

2207-
char *lasterr = NULL;
2208-
if (rc != SQLITE_OK && rc != SQLITE_DONE) lasterr = cloudsync_string_dup(sqlite3_errmsg(db), false);
2209-
(lasterr) ? sqlite3_exec(db, "ROLLBACK;", NULL, NULL, NULL) : sqlite3_exec(db, "COMMIT;", NULL, NULL, NULL);
2207+
char *lasterr = (rc != SQLITE_OK && rc != SQLITE_DONE) ? cloudsync_string_dup(sqlite3_errmsg(db), false) : NULL;
2208+
sql = (lasterr) ? "ROLLBACK TO cloudsync_payload_apply;" : "RELEASE cloudsync_payload_apply;";
2209+
sqlite3_exec(db, sql, NULL, NULL, NULL);
22102210

22112211
if (payload_apply_callback) {
22122212
payload_apply_callback(&payload_apply_xdata, &decoded_context, db, data, CLOUDSYNC_PAYLOAD_APPLY_CLEANUP, rc);

src/cloudsync.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
extern "C" {
2121
#endif
2222

23-
#define CLOUDSYNC_VERSION "0.8.37"
23+
#define CLOUDSYNC_VERSION "0.8.38"
2424

2525
int sqlite3_cloudsync_init (sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi);
2626

0 commit comments

Comments
 (0)