@@ -1716,7 +1716,7 @@ bool do_test_pk (sqlite3 *db, int ntest, bool print_result) {
17161716 if (do_test_pk_single_value (db , SQLITE_INTEGER , -15592946911031981 , 0 , NULL , print_result ) == false) goto finalize ;
17171717 if (do_test_pk_single_value (db , SQLITE_INTEGER , -922337203685477580 , 0 , NULL , print_result ) == false) goto finalize ;
17181718 if (do_test_pk_single_value (db , SQLITE_FLOAT , 0 , -9223372036854775.808 , NULL , print_result ) == false) goto finalize ;
1719- if ( do_test_pk_single_value ( db , SQLITE_NULL , 0 , 0 , NULL , print_result ) == false) goto finalize ;
1719+ // SQLITE_NULL is no longer valid for primary keys (runtime NULL check rejects it)
17201720 if (do_test_pk_single_value (db , SQLITE_TEXT , 0 , 0 , "Hello World" , print_result ) == false) goto finalize ;
17211721 char blob [] = {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 };
17221722 if (do_test_pk_single_value (db , SQLITE_BLOB , sizeof (blob ), 0 , blob , print_result ) == false) goto finalize ;
@@ -2381,8 +2381,8 @@ bool do_test_pk_decode_count_from_buffer(void) {
23812381 rc = sqlite3_cloudsync_init (db , NULL , NULL );
23822382 if (rc != SQLITE_OK ) goto cleanup ;
23832383
2384- // Encode multiple values
2385- const char * sql = "SELECT cloudsync_pk_encode(123, 'text value', 3.14, X'DEADBEEF', NULL );" ;
2384+ // Encode multiple values (no NULL — primary keys cannot contain NULL)
2385+ const char * sql = "SELECT cloudsync_pk_encode(123, 'text value', 3.14, X'DEADBEEF');" ;
23862386 rc = sqlite3_prepare_v2 (db , sql , -1 , & stmt , NULL );
23872387 if (rc != SQLITE_OK ) goto cleanup ;
23882388
@@ -2403,7 +2403,7 @@ bool do_test_pk_decode_count_from_buffer(void) {
24032403 // The count is embedded in the first byte of the encoded pk
24042404 size_t seek = 0 ;
24052405 int n = pk_decode (buffer , (size_t )pklen , -1 , & seek , -1 , NULL , NULL );
2406- if (n != 5 ) goto cleanup ; // Should decode 5 values
2406+ if (n != 4 ) goto cleanup ; // Should decode 4 values
24072407
24082408 result = true;
24092409
@@ -2849,8 +2849,8 @@ bool do_test_sql_pk_decode(void) {
28492849 rc = sqlite3_cloudsync_init (db , NULL , NULL );
28502850 if (rc != SQLITE_OK ) goto cleanup ;
28512851
2852- // Create a primary key with multiple values
2853- rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_encode(123, 'hello', 3.14, X'DEADBEEF', NULL );" , -1 , & stmt , NULL );
2852+ // Create a primary key with multiple values (no NULL — primary keys cannot contain NULL)
2853+ rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_encode(123, 'hello', 3.14, X'DEADBEEF');" , -1 , & stmt , NULL );
28542854 if (rc != SQLITE_OK ) goto cleanup ;
28552855
28562856 rc = sqlite3_step (stmt );
@@ -2934,21 +2934,6 @@ bool do_test_sql_pk_decode(void) {
29342934 sqlite3_finalize (stmt );
29352935 stmt = NULL ;
29362936
2937- // Test cloudsync_pk_decode for NULL (index 5)
2938- rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_decode(?, 5);" , -1 , & stmt , NULL );
2939- if (rc != SQLITE_OK ) goto cleanup ;
2940-
2941- rc = sqlite3_bind_blob (stmt , 1 , pk_copy , pk_len , SQLITE_STATIC );
2942- if (rc != SQLITE_OK ) goto cleanup ;
2943-
2944- rc = sqlite3_step (stmt );
2945- if (rc != SQLITE_ROW ) goto cleanup ;
2946-
2947- if (sqlite3_column_type (stmt , 0 ) != SQLITE_NULL ) goto cleanup ;
2948-
2949- sqlite3_finalize (stmt );
2950- stmt = NULL ;
2951-
29522937 result = true;
29532938
29542939cleanup :
0 commit comments