@@ -45,12 +45,15 @@ typedef struct {
4545} cloudsync_update_payload ;
4646
4747// TODO: REMOVE
48- int local_mark_insert_sentinel_meta (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen , sqlite3_int64 db_version , int seq );
49- int local_update_sentinel (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen , sqlite3_int64 db_version , int seq );
50- int local_mark_insert_or_update_meta (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen , const char * col_name , sqlite3_int64 db_version , int seq );
51- int local_mark_delete_meta (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen , sqlite3_int64 db_version , int seq );
52- int local_drop_meta (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen );
53- int local_update_move_meta (sqlite3 * db , cloudsync_table_context * table , const char * pk , size_t pklen , const char * pk2 , size_t pklen2 , sqlite3_int64 db_version );
48+ int local_mark_insert_sentinel_meta (cloudsync_table_context * table , const char * pk , size_t pklen , db_int64 db_version , int seq );
49+ int local_update_sentinel (cloudsync_table_context * table , const char * pk , size_t pklen , db_int64 db_version , int seq );
50+ int local_mark_insert_or_update_meta (cloudsync_table_context * table , const char * pk , size_t pklen , const char * col_name , db_int64 db_version , int seq );
51+ int local_mark_delete_meta (cloudsync_table_context * table , const char * pk , size_t pklen , db_int64 db_version , int seq );
52+ int local_drop_meta (cloudsync_table_context * table , const char * pk , size_t pklen );
53+ int local_update_move_meta (cloudsync_table_context * table , const char * pk , size_t pklen , const char * pk2 , size_t pklen2 , db_int64 db_version );
54+
55+
56+
5457int cloudsync_finalize_alter (sqlite3_context * context , cloudsync_context * data , cloudsync_table_context * table );
5558
5659void cloudsync_payload_encode_step (sqlite3_context * context , int argc , sqlite3_value * * argv );
@@ -80,11 +83,11 @@ void dbsync_db_version (sqlite3_context *context, int argc, sqlite3_value **argv
8083 UNUSED_PARAMETER (argv );
8184
8285 // retrieve context
83- sqlite3 * db = sqlite3_context_db_handle (context );
8486 cloudsync_context * data = (cloudsync_context * )sqlite3_user_data (context );
8587
86- int rc = cloudsync_dbversion_check_uptodate (db , data );
88+ int rc = cloudsync_dbversion_check_uptodate (data );
8789 if (rc != SQLITE_OK ) {
90+ sqlite3 * db = sqlite3_context_db_handle (context );
8891 dbutils_set_error (context , "Unable to retrieve db_version (%s)." , database_errmsg (db ));
8992 return ;
9093 }
@@ -96,12 +99,12 @@ void dbsync_db_version_next (sqlite3_context *context, int argc, sqlite3_value *
9699 DEBUG_FUNCTION ("cloudsync_db_version_next" );
97100
98101 // retrieve context
99- sqlite3 * db = sqlite3_context_db_handle (context );
100102 cloudsync_context * data = (cloudsync_context * )sqlite3_user_data (context );
101103
102104 sqlite3_int64 merging_version = (argc == 1 ) ? database_value_int (argv [0 ]) : CLOUDSYNC_VALUE_NOTSET ;
103- sqlite3_int64 value = cloudsync_dbversion_next (db , data , merging_version );
105+ sqlite3_int64 value = cloudsync_dbversion_next (data , merging_version );
104106 if (value == -1 ) {
107+ sqlite3 * db = sqlite3_context_db_handle (context );
105108 dbutils_set_error (context , "Unable to retrieve next_db_version (%s)." , database_errmsg (db ));
106109 return ;
107110 }
@@ -321,7 +324,7 @@ void dbsync_insert (sqlite3_context *context, int argc, sqlite3_value **argv) {
321324 }
322325
323326 // compute the next database version for tracking changes
324- db_int64 db_version = cloudsync_dbversion_next (db , data , CLOUDSYNC_VALUE_NOTSET );
327+ db_int64 db_version = cloudsync_dbversion_next (data , CLOUDSYNC_VALUE_NOTSET );
325328
326329 // check if a row with the same primary key already exists
327330 // if so, this means the row might have been previously deleted (sentinel)
@@ -330,18 +333,18 @@ void dbsync_insert (sqlite3_context *context, int argc, sqlite3_value **argv) {
330333
331334 if (table_count_cols (table ) == 0 ) {
332335 // if there are no columns other than primary keys, insert a sentinel record
333- rc = local_mark_insert_sentinel_meta (db , table , pk , pklen , db_version , cloudsync_bumpseq (data ));
336+ rc = local_mark_insert_sentinel_meta (table , pk , pklen , db_version , cloudsync_bumpseq (data ));
334337 if (rc != SQLITE_OK ) goto cleanup ;
335338 } else if (pk_exists ){
336339 // if a row with the same primary key already exists, update the sentinel record
337- rc = local_update_sentinel (db , table , pk , pklen , db_version , cloudsync_bumpseq (data ));
340+ rc = local_update_sentinel (table , pk , pklen , db_version , cloudsync_bumpseq (data ));
338341 if (rc != SQLITE_OK ) goto cleanup ;
339342 }
340343
341344 // process each non-primary key column for insert or update
342345 for (int i = 0 ; i < table_count_cols (table ); ++ i ) {
343346 // mark the column as inserted or updated in the metadata
344- rc = local_mark_insert_or_update_meta (db , table , pk , pklen , table_colname (table , i ), db_version , cloudsync_bumpseq (data ));
347+ rc = local_mark_insert_or_update_meta (table , pk , pklen , table_colname (table , i ), db_version , cloudsync_bumpseq (data ));
345348 if (rc != SQLITE_OK ) goto cleanup ;
346349 }
347350
@@ -368,7 +371,7 @@ void dbsync_delete (sqlite3_context *context, int argc, sqlite3_value **argv) {
368371 }
369372
370373 // compute the next database version for tracking changes
371- db_int64 db_version = cloudsync_dbversion_next (db , data , CLOUDSYNC_VALUE_NOTSET );
374+ db_int64 db_version = cloudsync_dbversion_next (data , CLOUDSYNC_VALUE_NOTSET );
372375 int rc = SQLITE_OK ;
373376
374377 // encode the primary key values into a buffer
@@ -381,11 +384,11 @@ void dbsync_delete (sqlite3_context *context, int argc, sqlite3_value **argv) {
381384 }
382385
383386 // mark the row as deleted by inserting a delete sentinel into the metadata
384- rc = local_mark_delete_meta (db , table , pk , pklen , db_version , cloudsync_bumpseq (data ));
387+ rc = local_mark_delete_meta (table , pk , pklen , db_version , cloudsync_bumpseq (data ));
385388 if (rc != SQLITE_OK ) goto cleanup ;
386389
387390 // remove any metadata related to the old rows associated with this primary key
388- rc = local_drop_meta (db , table , pk , pklen );
391+ rc = local_drop_meta (table , pk , pklen );
389392 if (rc != SQLITE_OK ) goto cleanup ;
390393
391394cleanup :
@@ -476,7 +479,7 @@ void dbsync_update_final (sqlite3_context *context) {
476479 }
477480
478481 // compute the next database version for tracking changes
479- db_int64 db_version = cloudsync_dbversion_next (db , data , CLOUDSYNC_VALUE_NOTSET );
482+ db_int64 db_version = cloudsync_dbversion_next (data , CLOUDSYNC_VALUE_NOTSET );
480483 int rc = SQLITE_OK ;
481484
482485 // Check if the primary key(s) have changed
@@ -515,17 +518,17 @@ void dbsync_update_final (sqlite3_context *context) {
515518 }
516519
517520 // mark the rows with the old primary key as deleted in the metadata (old row handling)
518- rc = local_mark_delete_meta (db , table , oldpk , oldpklen , db_version , cloudsync_bumpseq (data ));
521+ rc = local_mark_delete_meta (table , oldpk , oldpklen , db_version , cloudsync_bumpseq (data ));
519522 if (rc != SQLITE_OK ) goto cleanup ;
520523
521524 // move non-sentinel metadata entries from OLD primary key to NEW primary key
522525 // handles the case where some metadata is retained across primary key change
523526 // see https://github.com/sqliteai/sqlite-sync/blob/main/docs/PriKey.md for more details
524- rc = local_update_move_meta (db , table , pk , pklen , oldpk , oldpklen , db_version );
527+ rc = local_update_move_meta (table , pk , pklen , oldpk , oldpklen , db_version );
525528 if (rc != SQLITE_OK ) goto cleanup ;
526529
527530 // mark a new sentinel row with the new primary key in the metadata
528- rc = local_mark_insert_sentinel_meta (db , table , pk , pklen , db_version , cloudsync_bumpseq (data ));
531+ rc = local_mark_insert_sentinel_meta (table , pk , pklen , db_version , cloudsync_bumpseq (data ));
529532 if (rc != SQLITE_OK ) goto cleanup ;
530533
531534 // free memory if the OLD primary key was dynamically allocated
@@ -540,7 +543,7 @@ void dbsync_update_final (sqlite3_context *context) {
540543 if (dbutils_value_compare (payload -> old_values [col_index ], payload -> new_values [col_index ]) != 0 ) {
541544 // if a column value has changed, mark it as updated in the metadata
542545 // columns are in cid order
543- rc = local_mark_insert_or_update_meta (db , table , pk , pklen , table_colname (table , i ), db_version , cloudsync_bumpseq (data ));
546+ rc = local_mark_insert_or_update_meta (table , pk , pklen , table_colname (table , i ), db_version , cloudsync_bumpseq (data ));
544547 if (rc != SQLITE_OK ) goto cleanup ;
545548 }
546549 }
@@ -560,9 +563,7 @@ void dbsync_cleanup (sqlite3_context *context, int argc, sqlite3_value **argv) {
560563
561564 const char * table = (const char * )database_value_text (argv [0 ]);
562565 cloudsync_context * data = (cloudsync_context * )sqlite3_user_data (context );
563- sqlite3 * db = sqlite3_context_db_handle (context );
564-
565- cloudsync_cleanup (db , data , table );
566+ cloudsync_cleanup (data , table );
566567}
567568
568569void dbsync_enable_disable (sqlite3_context * context , const char * table_name , bool value ) {
@@ -639,7 +640,7 @@ void dbsync_init (sqlite3_context *context, const char *table, const char *algo,
639640 return ;
640641 }
641642
642- cloudsync_update_schema_hash (data , db );
643+ cloudsync_update_schema_hash (data );
643644
644645 // returns site_id as TEXT
645646 char buffer [UUID_STR_MAXLEN ];
@@ -784,8 +785,7 @@ void dbsync_commit_alter (sqlite3_context *context, int argc, sqlite3_value **ar
784785 goto rollback_finalize_alter ;
785786 }
786787
787- cloudsync_update_schema_hash (data , db );
788-
788+ cloudsync_update_schema_hash (data );
789789 return ;
790790
791791rollback_finalize_alter :
0 commit comments