@@ -433,6 +433,52 @@ int main(int argc, char** argv) {
433
433
434
434
}
435
435
436
+ StartPhase ("prefix" );
437
+ {
438
+ // Create new database
439
+ rocksdb_close (db );
440
+ rocksdb_destroy_db (options , dbname , & err );
441
+
442
+ rocksdb_options_set_filter_policy (options , rocksdb_filterpolicy_create_bloom (10 ));
443
+ rocksdb_options_set_prefix_extractor (options , rocksdb_slicetransform_create_fixed_prefix (3 ));
444
+ rocksdb_options_set_hash_skip_list_rep (options , 50000 , 4 , 4 );
445
+
446
+ db = rocksdb_open (options , dbname , & err );
447
+ CheckNoError (err );
448
+
449
+ rocksdb_put (db , woptions , "foo1" , 4 , "foo" , 3 , & err );
450
+ CheckNoError (err );
451
+ rocksdb_put (db , woptions , "foo2" , 4 , "foo" , 3 , & err );
452
+ CheckNoError (err );
453
+ rocksdb_put (db , woptions , "foo3" , 4 , "foo" , 3 , & err );
454
+ CheckNoError (err );
455
+ rocksdb_put (db , woptions , "bar1" , 4 , "bar" , 3 , & err );
456
+ CheckNoError (err );
457
+ rocksdb_put (db , woptions , "bar2" , 4 , "bar" , 3 , & err );
458
+ CheckNoError (err );
459
+ rocksdb_put (db , woptions , "bar3" , 4 , "bar" , 3 , & err );
460
+ CheckNoError (err );
461
+
462
+ rocksdb_readoptions_set_prefix_seek (roptions , 1 );
463
+
464
+ rocksdb_iterator_t * iter = rocksdb_create_iterator (db , roptions );
465
+ CheckCondition (!rocksdb_iter_valid (iter ));
466
+
467
+ rocksdb_iter_seek (iter , "bar" , 3 );
468
+ rocksdb_iter_get_error (iter , & err );
469
+ CheckNoError (err );
470
+ CheckCondition (rocksdb_iter_valid (iter ));
471
+
472
+ CheckIter (iter , "bar1" , "bar" );
473
+ rocksdb_iter_next (iter );
474
+ CheckIter (iter , "bar2" , "bar" );
475
+ rocksdb_iter_next (iter );
476
+ CheckIter (iter , "bar3" , "bar" );
477
+ rocksdb_iter_get_error (iter , & err );
478
+ CheckNoError (err );
479
+ rocksdb_iter_destroy (iter );
480
+ }
481
+
436
482
StartPhase ("cleanup" );
437
483
rocksdb_close (db );
438
484
rocksdb_options_destroy (options );
0 commit comments