@@ -37,6 +37,8 @@ typedef struct {
3737 cloudsync_context * data ;
3838} dbutils_settings_table_context ;
3939
40+ int dbutils_settings_check_version (sqlite3 * db , const char * version );
41+
4042// MARK: - General -
4143
4244DATABASE_RESULT dbutils_exec (sqlite3_context * context , sqlite3 * db , const char * sql , const char * * values , int types [], int lens [], int count , DATABASE_RESULT results [], int expected_types [], int result_count ) {
@@ -498,6 +500,10 @@ int dbutils_delete_triggers (sqlite3 *db, const char *table) {
498500int dbutils_check_triggers (sqlite3 * db , const char * table , table_algo algo ) {
499501 DEBUG_DBFUNCTION ("dbutils_check_triggers %s" , table );
500502
503+ if (dbutils_settings_check_version (db , "0.8.25" ) <= 0 ) {
504+ dbutils_delete_triggers (db , table );
505+ }
506+
501507 char * trigger_name = NULL ;
502508 int rc = SQLITE_NOMEM ;
503509
@@ -795,15 +801,15 @@ int dbutils_settings_get_int_value (sqlite3 *db, const char *key) {
795801 return (int )strtol (buffer , NULL , 0 );
796802}
797803
798- int dbutils_settings_check_version (sqlite3 * db ) {
804+ int dbutils_settings_check_version (sqlite3 * db , const char * version ) {
799805 DEBUG_SETTINGS ("dbutils_settings_check_version" );
800806 char buffer [256 ];
801807 if (dbutils_settings_get_value (db , CLOUDSYNC_KEY_LIBVERSION , buffer , sizeof (buffer )) == NULL ) return -666 ;
802808
803809 int major1 , minor1 , patch1 ;
804810 int major2 , minor2 , patch2 ;
805811 int count1 = sscanf (buffer , "%d.%d.%d" , & major1 , & minor1 , & patch1 );
806- int count2 = sscanf (CLOUDSYNC_VERSION , "%d.%d.%d" , & major2 , & minor2 , & patch2 );
812+ int count2 = sscanf (( version == NULL ? CLOUDSYNC_VERSION : version ) , "%d.%d.%d" , & major2 , & minor2 , & patch2 );
807813
808814 if (count1 != 3 || count2 != 3 ) return -666 ;
809815
@@ -965,7 +971,9 @@ int dbutils_settings_table_load_callback (void *xdata, int ncols, char **values,
965971 const char * value = values [i + 3 ];
966972 if (strcmp (key , "algo" )!= 0 ) continue ;
967973
968- table_add_to_context (db , data , crdt_algo_from_name (value ), table_name );
974+ if (dbutils_check_triggers (db , table_name , crdt_algo_from_name (value )) != SQLITE_OK ) return SQLITE_MISUSE ;
975+ if (table_add_to_context (db , data , crdt_algo_from_name (value ), table_name ) == false) return SQLITE_MISUSE ;
976+
969977 DEBUG_SETTINGS ("load tbl_name: %s value: %s" , key , value );
970978 }
971979
0 commit comments