Skip to content

Commit 28f2363

Browse files
committed
Merge branch 'main' into feat/batch-merge-and-rls
2 parents 3bc4787 + cb582c1 commit 28f2363

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/cloudsync.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
extern "C" {
1818
#endif
1919

20-
#define CLOUDSYNC_VERSION "0.9.111"
20+
#define CLOUDSYNC_VERSION "0.9.112"
2121
#define CLOUDSYNC_MAX_TABLENAME_LEN 512
2222

2323
#define CLOUDSYNC_VALUE_NOTSET -1

src/sqlite/cloudsync_sqlite.c

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -938,11 +938,23 @@ int dbsync_register_pure_function (sqlite3 *db, const char *name, void (*xfunc)(
938938
return dbsync_register_with_flags(db, name, xfunc, NULL, NULL, nargs, FLAGS_PURE, pzErrMsg, ctx, ctx_free);
939939
}
940940

941+
int dbsync_register_trigger_function (sqlite3 *db, const char *name, void (*xfunc)(sqlite3_context*,int,sqlite3_value**), int nargs, char **pzErrMsg, void *ctx, void (*ctx_free)(void *)) {
942+
const int FLAGS_TRIGGER = SQLITE_UTF8 | SQLITE_INNOCUOUS;
943+
DEBUG_DBFUNCTION("dbsync_register_trigger_function %s", name);
944+
return dbsync_register_with_flags(db, name, xfunc, NULL, NULL, nargs, FLAGS_TRIGGER, pzErrMsg, ctx, ctx_free);
945+
}
946+
941947
int dbsync_register_aggregate (sqlite3 *db, const char *name, void (*xstep)(sqlite3_context*,int,sqlite3_value**), void (*xfinal)(sqlite3_context*), int nargs, char **pzErrMsg, void *ctx, void (*ctx_free)(void *)) {
942948
DEBUG_DBFUNCTION("dbsync_register_aggregate %s", name);
943949
return dbsync_register(db, name, NULL, xstep, xfinal, nargs, pzErrMsg, ctx, ctx_free);
944950
}
945951

952+
int dbsync_register_trigger_aggregate (sqlite3 *db, const char *name, void (*xstep)(sqlite3_context*,int,sqlite3_value**), void (*xfinal)(sqlite3_context*), int nargs, char **pzErrMsg, void *ctx, void (*ctx_free)(void *)) {
953+
const int FLAGS_TRIGGER = SQLITE_UTF8 | SQLITE_INNOCUOUS;
954+
DEBUG_DBFUNCTION("dbsync_register_trigger_aggregate %s", name);
955+
return dbsync_register_with_flags(db, name, NULL, xstep, xfinal, nargs, FLAGS_TRIGGER, pzErrMsg, ctx, ctx_free);
956+
}
957+
946958
// MARK: - Row Filter -
947959

948960
void dbsync_set_filter (sqlite3_context *context, int argc, sqlite3_value **argv) {
@@ -1117,17 +1129,17 @@ int dbsync_register_functions (sqlite3 *db, char **pzErrMsg) {
11171129
if (rc != SQLITE_OK) return rc;
11181130
#endif
11191131

1120-
// PRIVATE functions
1121-
rc = dbsync_register_function(db, "cloudsync_is_sync", dbsync_is_sync, 1, pzErrMsg, ctx, NULL);
1132+
// PRIVATE functions (used inside triggers — require SQLITE_INNOCUOUS)
1133+
rc = dbsync_register_trigger_function(db, "cloudsync_is_sync", dbsync_is_sync, 1, pzErrMsg, ctx, NULL);
11221134
if (rc != SQLITE_OK) return rc;
1123-
1124-
rc = dbsync_register_function(db, "cloudsync_insert", dbsync_insert, -1, pzErrMsg, ctx, NULL);
1135+
1136+
rc = dbsync_register_trigger_function(db, "cloudsync_insert", dbsync_insert, -1, pzErrMsg, ctx, NULL);
11251137
if (rc != SQLITE_OK) return rc;
1126-
1127-
rc = dbsync_register_aggregate(db, "cloudsync_update", dbsync_update_step, dbsync_update_final, 3, pzErrMsg, ctx, NULL);
1138+
1139+
rc = dbsync_register_trigger_aggregate(db, "cloudsync_update", dbsync_update_step, dbsync_update_final, 3, pzErrMsg, ctx, NULL);
11281140
if (rc != SQLITE_OK) return rc;
1129-
1130-
rc = dbsync_register_function(db, "cloudsync_delete", dbsync_delete, -1, pzErrMsg, ctx, NULL);
1141+
1142+
rc = dbsync_register_trigger_function(db, "cloudsync_delete", dbsync_delete, -1, pzErrMsg, ctx, NULL);
11311143
if (rc != SQLITE_OK) return rc;
11321144

11331145
rc = dbsync_register_function(db, "cloudsync_col_value", dbsync_col_value, 3, pzErrMsg, ctx, NULL);

0 commit comments

Comments
 (0)