Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions bindings/c/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,20 @@ if(NOT WIN32)
add_fdbclient_test(
NAME fdb_c_setup_tests
COMMAND $<TARGET_FILE:fdb_c_setup_tests>)
if(NOT USE_SANITIZER)
if(APPLE)
set(FDB_BLOB_GRANULE_LIBRARY_PATH_ENV "DYLD_LIBRARY_PATH")
else()
set(FDB_BLOB_GRANULE_LIBRARY_PATH_ENV "LD_LIBRARY_PATH")
endif()
add_test(NAME fdb_c_blob_granule_fatal_exports
COMMAND ${CMAKE_COMMAND} -E env
"${FDB_BLOB_GRANULE_LIBRARY_PATH_ENV}=${CMAKE_BINARY_DIR}/lib:$ENV{${FDB_BLOB_GRANULE_LIBRARY_PATH_ENV}}"
$<TARGET_FILE:Python3::Interpreter> ${CMAKE_CURRENT_SOURCE_DIR}/test/fdb_c_blob_granule_fatal_exports.py
--library $<TARGET_FILE:fdb_c>
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
set_tests_properties(fdb_c_blob_granule_fatal_exports PROPERTIES TIMEOUT 120)
endif()
add_fdbclient_test(
NAME fdb_c_unit_tests
COMMAND $<TARGET_FILE:fdb_c_unit_tests>
Expand Down
203 changes: 203 additions & 0 deletions bindings/c/fdb_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,209 @@ extern "C" DLLEXPORT void fdb_tenant_destroy(FDBTenant* tenant) {
abort();
}

namespace {
[[noreturn]] void abortRemovedBlobGranuleFunction(const char* functionName) {
fprintf(stderr, "FoundationDB blob granule function %s was removed in 8.0; aborting.\n", functionName);
fflush(stderr);
abort();
}
} // namespace

extern "C" DLLEXPORT WARN_UNUSED_RESULT fdb_error_t
fdb_future_get_granule_summary_array(FDBFuture* f, FDBGranuleSummary const** out_summaries, int* out_count) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_purge_blob_granules(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t purge_version,
fdb_bool_t force) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture*
fdb_database_wait_purge_granules_complete(FDBDatabase* db, uint8_t const* purge_key_name, int purge_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_blobbify_range(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_blobbify_range_blocking(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_unblobbify_range(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_list_blobbified_ranges(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int rangeLimit) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_verify_blob_range(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t version) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_database_flush_blob_range(FDBDatabase* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
fdb_bool_t compact,
int64_t version) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_purge_blob_granules(FDBTenant* db,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t purge_version,
fdb_bool_t force) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture*
fdb_tenant_wait_purge_granules_complete(FDBTenant* db, uint8_t const* purge_key_name, int purge_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_blobbify_range(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_blobbify_range_blocking(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_unblobbify_range(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_list_blobbified_ranges(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int rangeLimit) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_verify_blob_range(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t version) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_tenant_flush_blob_range(FDBTenant* tenant,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
fdb_bool_t compact,
int64_t version) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_transaction_get_blob_granule_ranges(
FDBTransaction* tr,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int rangeLimit) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBResult* fdb_transaction_read_blob_granules(
FDBTransaction* tr,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t beginVersion,
int64_t readVersion,
FDBReadBlobGranuleContext granuleContext) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT WARN_UNUSED_RESULT FDBFuture* fdb_transaction_summarize_blob_granules(
FDBTransaction* tr,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t summaryVersion,
int rangeLimit) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT FDBFuture* fdb_transaction_read_blob_granules_start(FDBTransaction* tr,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t beginVersion,
int64_t readVersion,
int64_t* readVersionOut) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT FDBResult* fdb_transaction_read_blob_granules_finish(FDBTransaction* tr,
FDBFuture* f,
uint8_t const* begin_key_name,
int begin_key_name_length,
uint8_t const* end_key_name,
int end_key_name_length,
int64_t beginVersion,
int64_t readVersion,
FDBReadBlobGranuleContext* granuleContext) {
abortRemovedBlobGranuleFunction(__func__);
}

extern "C" DLLEXPORT fdb_error_t fdb_database_create_transaction(FDBDatabase* d, FDBTransaction** out_transaction) {
CATCH_AND_RETURN(Reference<ITransaction> tr = DB(d)->createTransaction();
if (g_api_version <= 15) tr->setOption(FDBTransactionOptions::ACCESS_SYSTEM_KEYS);
Expand Down
13 changes: 4 additions & 9 deletions bindings/c/foundationdb/fdb_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,9 @@ typedef struct cdc_versioned_mutations {
} FDBCdcVersionedMutations;

/*
* TODO: delete the following "blob granule" and "tenant" related data types
* when we are sure it's safe to do so.
*
* These features were always experimental and have now been removed, so probably
* the data structures can be done away with also for the FDB 8.0.0 release.
* Blob granule and tenant features were removed in 8.0.
* FDBGranuleSummary and FDBReadBlobGranuleContext are still used by the
* compatibility stub signatures. Keep these types while the stubs exist.
*/
typedef struct granulesummary {
FDBKeyRange key_range;
Expand Down Expand Up @@ -275,10 +273,7 @@ typedef struct readgranulecontext {
int granuleParallelism;
} FDBReadBlobGranuleContext;

/*
* TODO: end of section of blob granule and tenant related
* data types that can probably be removed.
*/
/* End of legacy blob granule and tenant data types. */

DLLEXPORT void fdb_future_cancel(FDBFuture* f);

Expand Down
Loading
Loading