Commit 4adcdae
committed
cassandra.h: delete never-to-be-implemented functions
There is a set of functions in cassandra.h that are never going to be
implemented in the CPP RS Driver. The reasons vary and are described
below.
These functions are moved to a separate header file,
`cassandra_deleted_functions.h`, which is only included by the tests
(to allow building them with Rust stubs of those functions). The driver
code, as well as the public header `cassandra.h`, do not include
`cassandra_deleted_functions.h`, so these functions are effectively
removed from the public API.
This is the full list of those functions, together with a short
description of why they are not planned:
**Never to be implemented functions**
**Custom types**
- `cass_collection_append_custom`
- `cass_collection_append_custom_n`
- `cass_statement_bind_custom`
- `cass_statement_bind_custom_by_name`
- `cass_statement_bind_custom_by_name_n`
- `cass_statement_bind_custom_n`
- `cass_tuple_set_custom`
- `cass_tuple_set_custom_n`
- `cass_value_get_custom`
**DataStax-specific features**
- `cass_cluster_set_cloud_secure_connection_bundle`
- `cass_cluster_set_cloud_secure_connection_bundle_n`
- `cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init`
- `cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init_n`
- `cass_cluster_set_monitor_reporting_interval`
**Deprecated in CPP Driver**
- `cass_cluster_set_queue_size_event`
- `cass_cluster_set_max_connections_per_host`
- `cass_cluster_set_reconnect_wait_time`
- `cass_cluster_set_max_concurrent_creation`
- `cass_cluster_set_max_concurrent_requests_threshold`
- `cass_cluster_set_max_requests_per_flush`
- `cass_cluster_set_write_bytes_high_water_mark`
- `cass_cluster_set_write_bytes_low_water_mark`
- `cass_cluster_set_pending_requests_high_water_mark`
- `cass_cluster_set_pending_requests_low_water_mark`
- `cass_log_cleanup`
- `cass_log_set_queue_size`
**Ancient features**
- `cass_cluster_set_no_compact`
- `cass_cluster_set_use_hostname_resolution` - I see no point in
disabling hostname resolution.
**Incompatible with the Rust Driver's architecture**
- `cass_cluster_set_new_request_ratio`
- `cass_cluster_set_max_reusable_write_objects`
- `cass_cluster_set_queue_size_io`
**Purposely unimplemented**
- `cass_statement_add_key_index` - binding values to unprepared
statements is risky and unsupported.
- `cass_cluster_set_prepare_on_up_or_add_host` - cluster events are
unreliable and this optimisation is unlikely to work well.
**Request tracing**
Explanation: the semantics is weird. CPP Driver waits for tracing info
to become available by performing queries to tracing tables with the
parameters specified by the following functions. The problem is,
**it does not expose** the results of the query; it's the user's
responsibility to fetch them themselves again. This is inefficient
and real pain. Therefore, we prefer the driver to provide no
functionalities regarding server-side tracing, so the user must query
tracing tables themselves, than to provide such a weird and incomplete
semantics.
- `cass_cluster_set_tracing_consistency`
- `cass_cluster_set_tracing_max_wait_time`
- `cass_cluster_set_tracing_retry_wait_time`1 parent 8a1ffd9 commit 4adcdae
File tree
7 files changed
+693
-647
lines changed- include
- scylla-rust-wrapper/src
- src
- tests/src/integration
- objects
7 files changed
+693
-647
lines changed
0 commit comments