@@ -1561,7 +1561,7 @@ bool do_test_pk (sqlite3 *db, int ntest, bool print_result) {
15611561 if (do_test_pk_single_value (db , SQLITE_INTEGER , -15592946911031981 , 0 , NULL , print_result ) == false) goto finalize ;
15621562 if (do_test_pk_single_value (db , SQLITE_INTEGER , -922337203685477580 , 0 , NULL , print_result ) == false) goto finalize ;
15631563 if (do_test_pk_single_value (db , SQLITE_FLOAT , 0 , -9223372036854775.808 , NULL , print_result ) == false) goto finalize ;
1564- if ( do_test_pk_single_value ( db , SQLITE_NULL , 0 , 0 , NULL , print_result ) == false) goto finalize ;
1564+ // SQLITE_NULL is no longer valid for primary keys (runtime NULL check rejects it)
15651565 if (do_test_pk_single_value (db , SQLITE_TEXT , 0 , 0 , "Hello World" , print_result ) == false) goto finalize ;
15661566 char blob [] = {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 };
15671567 if (do_test_pk_single_value (db , SQLITE_BLOB , sizeof (blob ), 0 , blob , print_result ) == false) goto finalize ;
@@ -2225,8 +2225,8 @@ bool do_test_pk_decode_count_from_buffer(void) {
22252225 rc = sqlite3_cloudsync_init (db , NULL , NULL );
22262226 if (rc != SQLITE_OK ) goto cleanup ;
22272227
2228- // Encode multiple values
2229- const char * sql = "SELECT cloudsync_pk_encode(123, 'text value', 3.14, X'DEADBEEF', NULL );" ;
2228+ // Encode multiple values (no NULL — primary keys cannot contain NULL)
2229+ const char * sql = "SELECT cloudsync_pk_encode(123, 'text value', 3.14, X'DEADBEEF');" ;
22302230 rc = sqlite3_prepare_v2 (db , sql , -1 , & stmt , NULL );
22312231 if (rc != SQLITE_OK ) goto cleanup ;
22322232
@@ -2247,7 +2247,7 @@ bool do_test_pk_decode_count_from_buffer(void) {
22472247 // The count is embedded in the first byte of the encoded pk
22482248 size_t seek = 0 ;
22492249 int n = pk_decode (buffer , (size_t )pklen , -1 , & seek , -1 , NULL , NULL );
2250- if (n != 5 ) goto cleanup ; // Should decode 5 values
2250+ if (n != 4 ) goto cleanup ; // Should decode 4 values
22512251
22522252 result = true;
22532253
@@ -2693,8 +2693,8 @@ bool do_test_sql_pk_decode(void) {
26932693 rc = sqlite3_cloudsync_init (db , NULL , NULL );
26942694 if (rc != SQLITE_OK ) goto cleanup ;
26952695
2696- // Create a primary key with multiple values
2697- rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_encode(123, 'hello', 3.14, X'DEADBEEF', NULL );" , -1 , & stmt , NULL );
2696+ // Create a primary key with multiple values (no NULL — primary keys cannot contain NULL)
2697+ rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_encode(123, 'hello', 3.14, X'DEADBEEF');" , -1 , & stmt , NULL );
26982698 if (rc != SQLITE_OK ) goto cleanup ;
26992699
27002700 rc = sqlite3_step (stmt );
@@ -2778,21 +2778,6 @@ bool do_test_sql_pk_decode(void) {
27782778 sqlite3_finalize (stmt );
27792779 stmt = NULL ;
27802780
2781- // Test cloudsync_pk_decode for NULL (index 5)
2782- rc = sqlite3_prepare_v2 (db , "SELECT cloudsync_pk_decode(?, 5);" , -1 , & stmt , NULL );
2783- if (rc != SQLITE_OK ) goto cleanup ;
2784-
2785- rc = sqlite3_bind_blob (stmt , 1 , pk_copy , pk_len , SQLITE_STATIC );
2786- if (rc != SQLITE_OK ) goto cleanup ;
2787-
2788- rc = sqlite3_step (stmt );
2789- if (rc != SQLITE_ROW ) goto cleanup ;
2790-
2791- if (sqlite3_column_type (stmt , 0 ) != SQLITE_NULL ) goto cleanup ;
2792-
2793- sqlite3_finalize (stmt );
2794- stmt = NULL ;
2795-
27962781 result = true;
27972782
27982783cleanup :
0 commit comments