diff --git a/.gitmodules b/.gitmodules index 5560cb3..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "rocksdb"] - path = rocksdb - url = https://github.com/facebook/rocksdb.git -[submodule "lz4"] - path = lz4 - url = git@github.com:lz4/lz4.git diff --git a/Code/RocksDBBackupEngine.mm b/Code/RocksDBBackupEngine.mm index 408e47e..039bff4 100644 --- a/Code/RocksDBBackupEngine.mm +++ b/Code/RocksDBBackupEngine.mm @@ -11,7 +11,7 @@ #import "RocksDBBackupInfo.h" #include -#include +#include #pragma mark - Informal Protocols @@ -45,7 +45,7 @@ - (instancetype)initWithPath:(NSString *)path if (self) { _path = [path copy]; rocksdb::Status status = rocksdb::BackupEngine::Open(rocksdb::Env::Default(), - rocksdb::BackupableDBOptions(_path.UTF8String), + rocksdb::BackupEngineOptions(_path.UTF8String), &_backupEngine); if (!status.ok()) { NSLog(@"Error opening database backup: %@", [RocksDBError errorWithRocksStatus:status]); diff --git a/Code/RocksDBComparator.mm b/Code/RocksDBComparator.mm index 169404f..7aa6dc0 100644 --- a/Code/RocksDBComparator.mm +++ b/Code/RocksDBComparator.mm @@ -42,14 +42,14 @@ + (instancetype)comaparatorWithType:(RocksDBComparatorType)type return [[self alloc] initWithName:@"objectiverocks.string.compare.asc" andBlock:^int(NSData *key1, NSData *key2) { NSString *str1 = [[NSString alloc] initWithData:key1 encoding:NSUTF8StringEncoding]; NSString *str2 = [[NSString alloc] initWithData:key2 encoding:NSUTF8StringEncoding]; - return [str1 compare:str2]; + return (int)[str1 compare:str2]; }]; case RocksDBComparatorStringCompareDescending: return [[self alloc] initWithName:@"objectiverocks.string.compare.desc" andBlock:^int(NSData *key1, NSData *key2) { NSString *str1 = [[NSString alloc] initWithData:key1 encoding:NSUTF8StringEncoding]; NSString *str2 = [[NSString alloc] initWithData:key2 encoding:NSUTF8StringEncoding]; - return -1 * [str1 compare:str2]; + return -1 * (int)[str1 compare:str2]; }]; } } diff --git a/Package.swift b/Package.swift index 16ec7de..f807863 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.7 +// swift-tools-version: 5.8 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -21,337 +21,49 @@ let package = Package( // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( name: "ObjectiveRocks", - dependencies: ["librocksdb"], + dependencies: ["RocksDB", "lz4"], path: "Code", + publicHeadersPath: "./" + ), + .testTarget( + name: "ObjectiveRocksTests", + dependencies: ["ObjectiveRocks"], + path: "Tests", exclude: [ - "RocksDBWriteBatchIterator+Private.h", - - "RocksDBColumnFamilyMetadata.h", - "RocksDBIndexedWriteBatch.h", - "RocksDBWriteBatchIterator.h", - "RocksDBPlainTableOptions.h", - "RocksDBCuckooTableOptions.h", - "RocksDBProperties.h", - "RocksDBCheckpoint.h", - "RocksDBStatistics.h", - "RocksDBStatisticsHistogram.h", - "RocksDBBackupEngine.h", - "RocksDBBackupInfo.h", - - "RocksDBColumnFamilyMetadata.mm", - "RocksDBIndexedWriteBatch.mm", - "RocksDBWriteBatchIterator.mm", - "RocksDBPlainTableOptions.mm", - "RocksDBCuckooTableOptions.mm", - "RocksDBProperties.mm", - "RocksDBCheckpoint.mm", - "RocksDBStatistics.mm", - "RocksDBStatisticsHistogram.mm", - "RocksDBBackupEngine.mm", - "RocksDBBackupInfo.mm", - - "RocksDBError.h", - "RocksDBSlice.h", - - "RocksDBCallbackAssociativeMergeOperator.h", - "RocksDBCallbackComparator.h", - "RocksDBCallbackMergeOperator.h", - "RocksDBCallbackSliceTransform.h", - ], - publicHeadersPath: "./", - cxxSettings: [ - .define("ROCKSDB_LITE"), + "RocksDBIndexedWriteBatchTests.m", + "RocksDBReadOnlyTests.m", + "RocksDBBackupTests.mm", + "RocksDBBasicTests.mm", + "RocksDBCheckpointTests.mm", + "RocksDBColumnFamilyMetadataTests.mm", + "RocksDBColumnFamilyTests.mm", + "RocksDBComparatorTests.mm", + "RocksDBIteratorTests.mm", + "RocksDBMergeOperatorTests.mm", + "RocksDBPrefixExtractorTests.mm", + "RocksDBPropertiesTests.mm", + "RocksDBSnapshotTests.mm", + "RocksDBStatisticsTests.mm", + "RocksDBTests.mm", + "RocksDBWriteBatchTests.mm", ] ), - .target(name: "librocksdb", - path: ".", - exclude: [ - "rocksdb/db/c.cc", - "rocksdb/db/db_test2.cc", - "rocksdb/db/db_test_util.cc", - - "rocksdb/db/db_test2.cc", - "rocksdb/db/db_test_util.cc", - "rocksdb/db/db_with_timestamp_test_util.cc", - "rocksdb/db/c_test.c", - - "rocksdb/include/rocksdb/c.h", - - "rocksdb/table/mock_table.cc", - - "rocksdb/test_util/testharness.cc", - "rocksdb/test_util/secondary_cache_test_util.cc", - "rocksdb/test_util/transaction_test_util.cc", - - "rocksdb/utilities/cassandra", - - "rocksdb/util/crc32c_ppc_asm.S", - - "rocksdb/util/build_version.cc", - - "rocksdb/port/README", - "rocksdb/util/build_version.cc.in", - "rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3", - "rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2", - "rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2", - "rocksdb/utilities/transactions/lock/range/range_tree/lib/README", - - "rocksdb/tools/db_bench.cc", - "rocksdb/cache/cache_bench.cc", - "rocksdb/util/log_write_bench.cc", - "rocksdb/util/filter_bench.cc", - "rocksdb/memtable/memtablerep_bench.cc", - "rocksdb/utilities/persistent_cache/persistent_cache_bench.cc", - "rocksdb/utilities/persistent_cache/hash_table_bench.cc", - "rocksdb/microbench/ribbon_bench.cc", - "rocksdb/microbench/db_basic_bench.cc", - "rocksdb/table/table_reader_bench.cc", - "rocksdb/db/forward_iterator_bench.cc", - "rocksdb/db/range_del_aggregator_bench.cc", - - "rocksdb/options/customizable_test.cc", - "rocksdb/options/options_test.cc", - "rocksdb/options/configurable_test.cc", - "rocksdb/options/options_settable_test.cc", - "rocksdb/tools/db_bench_tool_test.cc", - "rocksdb/tools/sst_dump_test.cc", - "rocksdb/tools/trace_analyzer_test.cc", - "rocksdb/tools/io_tracer_parser_test.cc", - "rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc", - "rocksdb/tools/reduce_levels_test.cc", - "rocksdb/tools/ldb_cmd_test.cc", - "rocksdb/tools/db_sanity_test.cc", - "rocksdb/memory/memory_allocator_test.cc", - "rocksdb/memory/arena_test.cc", - "rocksdb/cache/compressed_secondary_cache_test.cc", - "rocksdb/cache/lru_cache_test.cc", - "rocksdb/cache/cache_test.cc", - "rocksdb/cache/cache_reservation_manager_test.cc", - "rocksdb/util/rate_limiter_test.cc", - "rocksdb/util/thread_list_test.cc", - "rocksdb/util/work_queue_test.cc", - "rocksdb/util/thread_local_test.cc", - "rocksdb/util/defer_test.cc", - "rocksdb/util/file_reader_writer_test.cc", - "rocksdb/util/heap_test.cc", - "rocksdb/util/autovector_test.cc", - "rocksdb/util/crc32c_test.cc", - "rocksdb/util/bloom_test.cc", - "rocksdb/util/hash_test.cc", - "rocksdb/util/udt_util_test.cc", - "rocksdb/util/filelock_test.cc", - "rocksdb/util/timer_test.cc", - "rocksdb/util/coding_test.cc", - "rocksdb/util/ribbon_test.cc", - "rocksdb/util/dynamic_bloom_test.cc", - "rocksdb/util/repeatable_thread_test.cc", - "rocksdb/util/random_test.cc", - "rocksdb/util/slice_transform_test.cc", - "rocksdb/util/slice_test.cc", - "rocksdb/util/timer_queue_test.cc", - "rocksdb/file/prefetch_test.cc", - "rocksdb/file/random_access_file_reader_test.cc", - "rocksdb/file/delete_scheduler_test.cc", - "rocksdb/memtable/inlineskiplist_test.cc", - "rocksdb/memtable/write_buffer_manager_test.cc", - "rocksdb/memtable/skiplist_test.cc", - - "rocksdb/java/rocksjni/native_comparator_wrapper_test.cc", - "rocksdb/java/rocksjni/rocksdb_exception_test.cc", - "rocksdb/java/rocksjni/write_batch_test.cc", - "rocksdb/env/env_basic_test.cc", - "rocksdb/env/env_test.cc", - "rocksdb/env/io_posix_test.cc", - "rocksdb/env/mock_env_test.cc", - "rocksdb/utilities/simulator_cache/sim_cache_test.cc", - "rocksdb/utilities/simulator_cache/cache_simulator_test.cc", - "rocksdb/utilities/options/options_util_test.cc", - "rocksdb/utilities/util_merge_operators_test.cc", - "rocksdb/utilities/checkpoint/checkpoint_test.cc", - "rocksdb/utilities/memory/memory_test.cc", - "rocksdb/utilities/ttl/ttl_test.cc", - "rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc", - "rocksdb/utilities/option_change_migration/option_change_migration_test.cc", - "rocksdb/utilities/transactions/timestamped_snapshot_test.cc", - "rocksdb/utilities/transactions/write_prepared_transaction_test.cc", - "rocksdb/utilities/transactions/write_unprepared_transaction_test.cc", - "rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc", - "rocksdb/utilities/transactions/lock/range/range_locking_test.cc", - "rocksdb/utilities/transactions/transaction_test.cc", - "rocksdb/utilities/transactions/optimistic_transaction_test.cc", - "rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc", - "rocksdb/utilities/cassandra/cassandra_serialize_test.cc", - "rocksdb/utilities/cassandra/cassandra_row_merge_test.cc", - "rocksdb/utilities/cassandra/cassandra_format_test.cc", - "rocksdb/utilities/cassandra/cassandra_functional_test.cc", - "rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc", - "rocksdb/utilities/agg_merge/agg_merge_test.cc", - "rocksdb/utilities/merge_operators/string_append/stringappend_test.cc", - "rocksdb/utilities/backup/backup_engine_test.cc", - "rocksdb/utilities/persistent_cache/persistent_cache_test.cc", - "rocksdb/utilities/persistent_cache/hash_table_test.cc", - "rocksdb/utilities/object_registry_test.cc", - "rocksdb/utilities/env_mirror_test.cc", - "rocksdb/utilities/env_timed_test.cc", - "rocksdb/utilities/blob_db/blob_db_test.cc", - "rocksdb/table/sst_file_reader_test.cc", - "rocksdb/table/cleanable_test.cc", - "rocksdb/table/merger_test.cc", - "rocksdb/table/cuckoo/cuckoo_table_builder_test.cc", - "rocksdb/table/cuckoo/cuckoo_table_reader_test.cc", - "rocksdb/table/block_based/data_block_hash_index_test.cc", - "rocksdb/table/block_based/full_filter_block_test.cc", - "rocksdb/table/block_based/block_test.cc", - "rocksdb/table/block_based/block_based_table_reader_test.cc", - "rocksdb/table/block_based/partitioned_filter_block_test.cc", - "rocksdb/table/block_fetcher_test.cc", - "rocksdb/table/table_test.cc", - "rocksdb/db/db_io_failure_test.cc", - "rocksdb/db/periodic_task_scheduler_test.cc", - "rocksdb/db/db_universal_compaction_test.cc", - "rocksdb/db/options_file_test.cc", - "rocksdb/db/db_encryption_test.cc", - "rocksdb/db/db_iter_test.cc", - "rocksdb/db/db_compaction_test.cc", - "rocksdb/db/column_family_test.cc", - "rocksdb/db/range_tombstone_fragmenter_test.cc", - "rocksdb/db/compact_files_test.cc", - "rocksdb/db/table_properties_collector_test.cc", - "rocksdb/db/db_basic_test.cc", - "rocksdb/db/file_indexer_test.cc", - "rocksdb/db/flush_job_test.cc", - "rocksdb/db/external_sst_file_test.cc", - "rocksdb/db/range_del_aggregator_test.cc", - "rocksdb/db/db_iter_stress_test.cc", - "rocksdb/db/fault_injection_test.cc", - "rocksdb/db/wal_manager_test.cc", - "rocksdb/db/db_inplace_update_test.cc", - "rocksdb/db/db_flush_test.cc", - "rocksdb/db/db_log_iter_test.cc", - "rocksdb/db/wal_edit_test.cc", - "rocksdb/db/prefix_test.cc", - "rocksdb/db/db_range_del_test.cc", - "rocksdb/db/db_memtable_test.cc", - "rocksdb/db/db_secondary_test.cc", - "rocksdb/db/compaction/compaction_iterator_test.cc", - "rocksdb/db/compaction/compaction_service_test.cc", - "rocksdb/db/compaction/compaction_job_stats_test.cc", - "rocksdb/db/compaction/clipping_iterator_test.cc", - "rocksdb/db/compaction/tiered_compaction_test.cc", - "rocksdb/db/compaction/compaction_picker_test.cc", - "rocksdb/db/compaction/compaction_job_test.cc", - "rocksdb/db/db_with_timestamp_compaction_test.cc", - "rocksdb/db/db_clip_test.cc", - "rocksdb/db/perf_context_test.cc", - "rocksdb/db/db_merge_operand_test.cc", - "rocksdb/db/db_logical_block_size_cache_test.cc", - "rocksdb/db/comparator_db_test.cc", - "rocksdb/db/db_readonly_with_timestamp_test.cc", - "rocksdb/db/version_builder_test.cc", - "rocksdb/db/wide/db_wide_basic_test.cc", - "rocksdb/db/wide/wide_column_serialization_test.cc", - "rocksdb/db/external_sst_file_basic_test.cc", - "rocksdb/db/db_statistics_test.cc", - "rocksdb/db/import_column_family_test.cc", - "rocksdb/db/db_compaction_filter_test.cc", - "rocksdb/db/corruption_test.cc", - "rocksdb/db/seqno_time_test.cc", - "rocksdb/db/repair_test.cc", - "rocksdb/db/db_merge_operator_test.cc", - "rocksdb/db/merge_helper_test.cc", - "rocksdb/db/filename_test.cc", - "rocksdb/db/log_test.cc", - "rocksdb/db/db_kv_checksum_test.cc", - "rocksdb/db/obsolete_files_test.cc", - "rocksdb/db/db_properties_test.cc", - "rocksdb/db/version_set_test.cc", - "rocksdb/db/db_test.cc", - "rocksdb/db/listener_test.cc", - "rocksdb/db/db_with_timestamp_basic_test.cc", - "rocksdb/db/db_options_test.cc", - "rocksdb/db/db_table_properties_test.cc", - "rocksdb/db/merge_test.cc", - "rocksdb/db/db_bloom_filter_test.cc", - "rocksdb/db/cuckoo_table_db_test.cc", - "rocksdb/db/db_rate_limiter_test.cc", - "rocksdb/db/db_block_cache_test.cc", - "rocksdb/db/manual_compaction_test.cc", - "rocksdb/db/db_write_buffer_manager_test.cc", - "rocksdb/db/db_wal_test.cc", - "rocksdb/db/memtable_list_test.cc", - "rocksdb/db/write_batch_test.cc", - "rocksdb/db/db_iterator_test.cc", - "rocksdb/db/db_write_test.cc", - "rocksdb/db/error_handler_fs_test.cc", - "rocksdb/db/blob/blob_counting_iterator_test.cc", - "rocksdb/db/blob/db_blob_compaction_test.cc", - "rocksdb/db/blob/db_blob_corruption_test.cc", - "rocksdb/db/blob/blob_garbage_meter_test.cc", - "rocksdb/db/blob/blob_file_builder_test.cc", - "rocksdb/db/blob/blob_file_reader_test.cc", - "rocksdb/db/blob/blob_source_test.cc", - "rocksdb/db/blob/db_blob_basic_test.cc", - "rocksdb/db/blob/db_blob_index_test.cc", - "rocksdb/db/blob/blob_file_cache_test.cc", - "rocksdb/db/blob/blob_file_garbage_test.cc", - "rocksdb/db/blob/blob_file_addition_test.cc", - "rocksdb/db/plain_table_db_test.cc", - "rocksdb/db/db_sst_test.cc", - "rocksdb/db/version_edit_test.cc", - "rocksdb/db/db_tailing_iter_test.cc", - "rocksdb/db/deletefile_test.cc", - "rocksdb/db/write_controller_test.cc", - "rocksdb/db/dbformat_test.cc", - "rocksdb/db/db_dynamic_level_test.cc", - "rocksdb/db/write_callback_test.cc", - "rocksdb/test_util/testutil_test.cc", - "rocksdb/monitoring/statistics_test.cc", - "rocksdb/monitoring/iostats_context_test.cc", - "rocksdb/monitoring/stats_history_test.cc", - "rocksdb/monitoring/histogram_test.cc", - "rocksdb/trace_replay/block_cache_tracer_test.cc", - "rocksdb/trace_replay/io_tracer_test.cc", - "rocksdb/logging/auto_roll_logger_test.cc", - "rocksdb/logging/env_logger_test.cc", - "rocksdb/logging/event_logger_test.cc", - - - ], - sources: [ - "Patches/build_version.cc", - "rocksdb/cache", - "rocksdb/db", - "rocksdb/env", - "rocksdb/file", - "rocksdb/include", - "rocksdb/logging", - "rocksdb/memory", - "rocksdb/memtable", - "rocksdb/monitoring", - "rocksdb/options", - "rocksdb/port", - "rocksdb/table", - "rocksdb/trace_replay", - "rocksdb/util", - "rocksdb/utilities", - ], - publicHeadersPath: "rocksdb/include", - cxxSettings: [ - .headerSearchPath("./rocksdb"), - .headerSearchPath("./lz4/lib"), - .define("ROCKSDB_LITE"), - .define("IOS_CROSS_COMPILE", .when(platforms: [.iOS])), - .define("ROCKSDB_PLATFORM_POSIX"), - .define("ROCKSDB_LIB_IO_POSIX"), - .define("PORTABLE"), - .define("OS_MACOSX"), - .define("NDEBUG"), - .define("NPERF_CONTEXT"), - .define("NIOSTATS_CONTEXT"), - .define("LZ4"), - .define("HAVE_FULLFSYNC"), - ] - ), + .binaryTarget( + name: "RocksDB", + url: "https://github.com/GoodNotes/rocksdb/releases/download/v8.10.0/RocksDB.xcframework.zip", + checksum: "70b11dbb039a4e63fc7f4d100c49fb5dbd73db8a5cdefe24b6ee0eb32d1bda39" + ), + .target( + name: "lz4", + path: "lz4", + sources: [ + "lz4.c", + "lz4.h", + "lz4hc.c", + "lz4hc.h", + ], + publicHeadersPath: "." + ) ], cxxLanguageStandard: .cxx20 ) diff --git a/Patches/build_version.cc b/Patches/build_version.cc deleted file mode 100644 index e639f0c..0000000 --- a/Patches/build_version.cc +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - -#include - -#include "rocksdb/version.h" -#include "rocksdb/utilities/object_registry.h" -#include "util/string_util.h" - -// The build script may replace these values with real values based -// on whether or not GIT is available and the platform settings -static const std::string rocksdb_build_git_sha = "rocksdb_build_git_sha:145a50ba007326eab90da9b12d697b35f5b60e7d"; -static const std::string rocksdb_build_git_tag = "rocksdb_build_git_tag:v8.5.4"; -static const std::string rocksdb_build_date = "rocksdb_build_date:2023-09-27 04:47:02"; - -std::unordered_map ROCKSDB_NAMESPACE::ObjectRegistry::builtins_ = { - -}; - -namespace ROCKSDB_NAMESPACE { -static void AddProperty(std::unordered_map *props, const std::string& name) { - size_t colon = name.find(":"); - if (colon != std::string::npos && colon > 0 && colon < name.length() - 1) { - // If we found a "@:", then this property was a build-time substitution that failed. Skip it - size_t at = name.find("@", colon); - if (at != colon + 1) { - // Everything before the colon is the name, after is the value - (*props)[name.substr(0, colon)] = name.substr(colon + 1); - } - } -} - -static std::unordered_map* LoadPropertiesSet() { - auto * properties = new std::unordered_map(); - AddProperty(properties, rocksdb_build_git_sha); - AddProperty(properties, rocksdb_build_git_tag); - AddProperty(properties, rocksdb_build_date); - return properties; -} - -const std::unordered_map& GetRocksBuildProperties() { - static std::unique_ptr> props(LoadPropertiesSet()); - return *props; -} - -std::string GetRocksVersionAsString(bool with_patch) { - std::string version = std::to_string(ROCKSDB_MAJOR) + "." + std::to_string(ROCKSDB_MINOR); - if (with_patch) { - return version + "." + std::to_string(ROCKSDB_PATCH); - } else { - return version; - } -} - -std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose) { - std::string info = program + " (RocksDB) " + GetRocksVersionAsString(true); - if (verbose) { - for (const auto& it : GetRocksBuildProperties()) { - info.append("\n "); - info.append(it.first); - info.append(": "); - info.append(it.second); - } - } - return info; -} -} // namespace ROCKSDB_NAMESPACE - diff --git a/Tests/RocksDBBasicTests.swift b/Tests/RocksDBBasicTests.swift index 4a5177a..ca4eca9 100644 --- a/Tests/RocksDBBasicTests.swift +++ b/Tests/RocksDBBasicTests.swift @@ -8,7 +8,6 @@ import XCTest import ObjectiveRocks - class RocksDBBasicTests : RocksDBTests { func testSwift_DB_Open_ErrorIfExists() throws { diff --git a/Tests/RocksDBColumnFamilyTests.swift b/Tests/RocksDBColumnFamilyTests.swift index d63a5e0..07fea74 100644 --- a/Tests/RocksDBColumnFamilyTests.swift +++ b/Tests/RocksDBColumnFamilyTests.swift @@ -258,7 +258,7 @@ class RocksDBColumnFamilyTests : RocksDBTests { try! newColumnFamily.setData("cf_value1", forKey: "cf_key1") try! newColumnFamily.setData("cf_value2", forKey: "cf_key2") - let dfIterator = defaultColumnFamily.iterator() + let dfIterator = defaultColumnFamily.iterator()! var actual = [String]() @@ -274,7 +274,7 @@ class RocksDBColumnFamilyTests : RocksDBTests { dfIterator.close() - let cfIterator = newColumnFamily.iterator() + let cfIterator = newColumnFamily.iterator()! actual.removeAll() diff --git a/Tests/RocksDBComparatorTests.swift b/Tests/RocksDBComparatorTests.swift index 10d82a5..85ebb10 100644 --- a/Tests/RocksDBComparatorTests.swift +++ b/Tests/RocksDBComparatorTests.swift @@ -21,7 +21,7 @@ class RocksDBComparatorTests : RocksDBTests { try! rocks.setData("abc2", forKey: "abc2") try! rocks.setData("abc3", forKey: "abc3") - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.seekToFirst() @@ -70,7 +70,7 @@ class RocksDBComparatorTests : RocksDBTests { try! rocks.setData("abc2", forKey: "abc2") try! rocks.setData("abc3", forKey: "abc3") - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.seekToFirst() @@ -130,7 +130,7 @@ class RocksDBComparatorTests : RocksDBTests { /* Expected Array: [A0, A1, A10, A100, A1000, A1001, A1019, A102, A1020, ...] */ expected.sort() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! var idx = 0 iterator.enumerateKeys { (key, stop) -> Void in @@ -156,7 +156,7 @@ class RocksDBComparatorTests : RocksDBTests { /* Expected Array: [A9999, A9998 .. A9990, A999, A9989, ...] */ expected.sort() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! var idx = 9999 iterator.enumerateKeys { (key, stop) -> Void in diff --git a/Tests/RocksDBIteratorTests.swift b/Tests/RocksDBIteratorTests.swift index 23074fd..8de2abb 100644 --- a/Tests/RocksDBIteratorTests.swift +++ b/Tests/RocksDBIteratorTests.swift @@ -21,7 +21,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 3", forKey: "key 3") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.seekToFirst() while iterator.isValid() { @@ -43,7 +43,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 1", forKey: "key 1") try! rocks.setData("value 2", forKey: "key 2") - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.seekToFirst() @@ -88,7 +88,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 3", forKey: "key 3") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeys { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -110,7 +110,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 3", forKey: "key 3") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeys(inReverse: true, using: { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -133,7 +133,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeys(in: RocksDBMakeKeyRange("key 2", nil), reverse: false) { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -156,7 +156,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeys(in: RocksDBMakeKeyRange(nil, "key 4"), reverse: false) { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -179,7 +179,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeys(in: RocksDBMakeKeyRange("key 2", "key 4"), reverse: false) { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -201,7 +201,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 3", forKey: "key 3") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeysAndValues { (key, value, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -224,7 +224,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 3", forKey: "key 3") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeysAndValues(inReverse: true, using: { (key, value, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -248,7 +248,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeysAndValues(in: RocksDBMakeKeyRange("key 2", nil), reverse: false) { (key, value, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -272,7 +272,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeysAndValues(in: RocksDBMakeKeyRange(nil, "key 4"), reverse: false) { (key, value, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) @@ -296,7 +296,7 @@ class RocksDBIteratorTests : RocksDBTests { try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - let iterator = rocks.iterator() + let iterator = rocks.iterator()! iterator.enumerateKeysAndValues(in: RocksDBMakeKeyRange("key 2", "key 4"), reverse: false) { (key, value, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) diff --git a/Tests/RocksDBMergeOperatorTests.swift b/Tests/RocksDBMergeOperatorTests.swift index 9a85452..c85bc82 100644 --- a/Tests/RocksDBMergeOperatorTests.swift +++ b/Tests/RocksDBMergeOperatorTests.swift @@ -16,14 +16,18 @@ protocol DataConvertible { extension DataConvertible { init?(data: Data) { - guard data.count == MemoryLayout.size else { - return nil - } - self = data.withUnsafeBytes { $0.pointee } + guard data.count == MemoryLayout.size else { + return nil + } + self = data.withUnsafeBytes { rawBufferPointer in + guard let pointer = rawBufferPointer.baseAddress?.assumingMemoryBound(to: Self.self) else { + fatalError() + } + return pointer.pointee + } } var data: Data { - var value = self - return Data(buffer: UnsafeBufferPointer(start: &value, count: 1)) + withUnsafeBytes(of: self) { Data($0) } } } diff --git a/Tests/RocksDBPrefixExtractorTests.swift b/Tests/RocksDBPrefixExtractorTests.swift index f3eb879..7164991 100644 --- a/Tests/RocksDBPrefixExtractorTests.swift +++ b/Tests/RocksDBPrefixExtractorTests.swift @@ -23,7 +23,7 @@ class RocksDBPrefixExtractorTests : RocksDBTests { try! rocks.setData("x", forKey: "101A") try! rocks.setData("x", forKey: "101B") - let iterator = rocks.iterator() + let iterator = rocks.iterator()! var keys = [String]() iterator.enumerateKeys(withPrefix: "100", using: { (key, stop) -> Void in @@ -97,7 +97,7 @@ class RocksDBPrefixExtractorTests : RocksDBTests { try! rocks.setData("x", forKey: "1022") try! rocks.setData("x", forKey: "5323") - let iterator = rocks.iterator() + let iterator = rocks.iterator()! var keys = [String]() iterator.enumerateKeys(withPrefix: "10", using: { (key, stop) -> Void in diff --git a/Tests/RocksDBSnapshotTests.swift b/Tests/RocksDBSnapshotTests.swift index f23803a..9ecaeac 100644 --- a/Tests/RocksDBSnapshotTests.swift +++ b/Tests/RocksDBSnapshotTests.swift @@ -20,7 +20,7 @@ class RocksDBSnapshotTests : RocksDBTests { try! rocks.setData("value 2", forKey: "key 2") try! rocks.setData("value 3", forKey: "key 3") - let snapshot = rocks.snapshot() + let snapshot = rocks.snapshot()! try! rocks.deleteData(forKey: "key 1") try! rocks.setData("value 4", forKey: "key 4") @@ -45,13 +45,13 @@ class RocksDBSnapshotTests : RocksDBTests { try! rocks.setData("value 2", forKey: "key 2") try! rocks.setData("value 3", forKey: "key 3") - let snapshot = rocks.snapshot() + let snapshot = rocks.snapshot()! try! rocks.deleteData(forKey: "key 1") try! rocks.setData("value 4", forKey: "key 4") var actual = [String]() - var iterator = snapshot.iterator() + var iterator = snapshot.iterator()! iterator.enumerateKeys { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) } @@ -63,7 +63,7 @@ class RocksDBSnapshotTests : RocksDBTests { actual.removeAll() - iterator = snapshot.iterator() + iterator = snapshot.iterator()! iterator.enumerateKeys { (key, stop) -> Void in actual.append(String(data: key, encoding: .utf8)!) } @@ -78,13 +78,13 @@ class RocksDBSnapshotTests : RocksDBTests { }) try! rocks.setData("value 1", forKey: "key 1") - let snapshot1 = rocks.snapshot() + let snapshot1 = rocks.snapshot()! try! rocks.setData("value 2", forKey: "key 2") - let snapshot2 = rocks.snapshot() + let snapshot2 = rocks.snapshot()! try! rocks.setData("value 3", forKey: "key 3") - let snapshot3 = rocks.snapshot() + let snapshot3 = rocks.snapshot()! XCTAssertEqual(snapshot1.sequenceNumber(), 1 as UInt64) XCTAssertEqual(snapshot2.sequenceNumber(), 2 as UInt64) diff --git a/rocksdb b/rocksdb deleted file mode 160000 index 145a50b..0000000 --- a/rocksdb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 145a50ba007326eab90da9b12d697b35f5b60e7d