diff --git a/Makefile b/Makefile
index c644cdf8..b315c9a7 100644
--- a/Makefile
+++ b/Makefile
@@ -138,10 +138,13 @@ SCYLLA_EXAMPLES_TO_RUN := \
concurrent_executions \
date_time \
duration \
+ execution_profiles \
maps \
named_parameters \
paging \
+ perf \
prepared \
+ schema_meta \
simple \
ssl \
tracing \
@@ -150,12 +153,8 @@ SCYLLA_EXAMPLES_TO_RUN := \
uuids \
# auth <- unimplemented `cass_cluster_set_authenticator_callbacks()`
- # execution_profiles <- unimplemented `cass_statement_set_keyspace()`
# host_listener <- unimplemented `cass_cluster_set_host_listener_callback()`
# logging <- unimplemented `cass_cluster_set_host_listener_callback()`
- # perf <- unimplemented `cass_cluster_set_queue_size_io()`
- # schema_meta <- unimplemented multiple schema-related functions
- # cloud <- out of interest for us, not related to ScyllaDB
endif
ifndef CCM_COMMIT_ID
@@ -163,7 +162,7 @@ ifndef CCM_COMMIT_ID
endif
ifndef SCYLLA_VERSION
- SCYLLA_VERSION := release:6.1.1
+ SCYLLA_VERSION := release:2025.3
endif
ifndef CASSANDRA_VERSION
diff --git a/examples/cloud/.gitignore b/examples/cloud/.gitignore
deleted file mode 100644
index c3de202f..00000000
--- a/examples/cloud/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-cloud
diff --git a/examples/cloud/CMakeLists.txt b/examples/cloud/CMakeLists.txt
deleted file mode 100644
index 6ad10ac2..00000000
--- a/examples/cloud/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-cmake_minimum_required(VERSION 3.15)
-
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ".")
-set(PROJECT_EXAMPLE_NAME cloud)
-
-file(GLOB EXAMPLE_SRC_FILES *.c)
-include_directories(${INCLUDES})
-add_executable(${PROJECT_EXAMPLE_NAME} ${EXAMPLE_SRC_FILES})
-target_link_libraries(${PROJECT_EXAMPLE_NAME} ${PROJECT_LIB_NAME_TARGET} ${CASS_LIBS})
-add_dependencies(${PROJECT_EXAMPLE_NAME} ${PROJECT_LIB_NAME_TARGET})
-
-set_target_properties(${PROJECT_EXAMPLE_NAME} PROPERTIES FOLDER "Examples"
- COMPILE_FLAGS "${EXAMPLE_CMAKE_C_FLAGS}")
diff --git a/examples/cloud/cloud.c b/examples/cloud/cloud.c
deleted file mode 100644
index c3ec301b..00000000
--- a/examples/cloud/cloud.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- This is free and unencumbered software released into the public domain.
-
- Anyone is free to copy, modify, publish, use, compile, sell, or
- distribute this software, either in source code form or as a compiled
- binary, for any purpose, commercial or non-commercial, and by any
- means.
-
- In jurisdictions that recognize copyright laws, the author or authors
- of this software dedicate any and all copyright interest in the
- software to the public domain. We make this dedication for the benefit
- of the public at large and to the detriment of our heirs and
- successors. We intend this dedication to be an overt act of
- relinquishment in perpetuity of all present and future rights to this
- software under copyright law.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
- For more information, please refer to
-*/
-
-#include
-#include
-
-int main(int argc, char* argv[]) {
- /* Setup and connect to cluster */
- CassFuture* connect_future = NULL;
- CassCluster* cluster;
- CassSession* session;
-
- const char* secure_connect_bundle;
- const char* username;
- const char* password;
-
- if (argc < 4) {
- fprintf(stderr, "Usage: %s \n", argv[0]);
- return 1;
- }
-
- secure_connect_bundle = argv[1];
- username = argv[2];
- password = argv[3];
-
- cluster = cass_cluster_new();
- session = cass_session_new();
-
- /* Setup driver to connect to the cloud using the secure connection bundle */
- if (cass_cluster_set_cloud_secure_connection_bundle(cluster, secure_connect_bundle) != CASS_OK) {
- fprintf(stderr, "Unable to configure cloud using the secure connection bundle: %s\n",
- secure_connect_bundle);
- }
-
- cass_cluster_set_credentials(cluster, username, password);
-
- /* Provide the cluster object as configuration to connect the session */
- connect_future = cass_session_connect(session, cluster);
-
- if (cass_future_error_code(connect_future) == CASS_OK) {
- /* Build statement and execute query */
- const char* query = "SELECT release_version FROM system.local WHERE key='local'";
- CassStatement* statement = cass_statement_new(query, 0);
-
- CassFuture* result_future = cass_session_execute(session, statement);
-
- if (cass_future_error_code(result_future) == CASS_OK) {
- /* Retrieve result set and get the first row */
- const CassResult* result = cass_future_get_result(result_future);
- const CassRow* row = cass_result_first_row(result);
-
- if (row) {
- const CassValue* value = cass_row_get_column_by_name(row, "release_version");
-
- const char* release_version;
- size_t release_version_length;
- cass_value_get_string(value, &release_version, &release_version_length);
- printf("release_version: '%.*s'\n", (int)release_version_length, release_version);
- }
-
- cass_result_free(result);
- } else {
- /* Handle error */
- const char* message;
- size_t message_length;
- cass_future_error_message(result_future, &message, &message_length);
- fprintf(stderr, "Unable to run query: '%.*s'\n", (int)message_length, message);
- }
-
- cass_statement_free(statement);
- cass_future_free(result_future);
- } else {
- /* Handle error */
- const char* message;
- size_t message_length;
- cass_future_error_message(connect_future, &message, &message_length);
- fprintf(stderr, "Unable to connect: '%.*s'\n", (int)message_length, message);
- }
-
- cass_future_free(connect_future);
- cass_cluster_free(cluster);
- cass_session_free(session);
-
- return 0;
-}
diff --git a/examples/execution_profiles/execution_profiles.c b/examples/execution_profiles/execution_profiles.c
index 91b97546..a113f71a 100644
--- a/examples/execution_profiles/execution_profiles.c
+++ b/examples/execution_profiles/execution_profiles.c
@@ -115,7 +115,6 @@ CassError insert_into_examples(CassSession* session, const char* profile_name, c
}
}
cass_statement_set_keyspace(statement, "execution_profiles");
- cass_statement_add_key_index(statement, 0);
cass_statement_bind_string(statement, 0, key);
cass_statement_bind_bool(statement, 1, value);
future = cass_session_execute(session, statement);
@@ -205,7 +204,7 @@ int main(int argc, char* argv[]) {
/* Create a keyspace and table for the execution profile example */
execute_query(session, "CREATE KEYSPACE IF NOT EXISTS examples WITH replication = { \
- 'class': 'SimpleStrategy', 'replication_factor': '3' \
+ 'class': 'NetworkTopologyStrategy', 'replication_factor': '3' \
}");
execute_query(session, "CREATE TABLE IF NOT EXISTS examples.execution_profiles ( \
key text PRIMARY KEY, \
diff --git a/examples/perf/perf.c b/examples/perf/perf.c
index d036656e..bbd76efa 100644
--- a/examples/perf/perf.c
+++ b/examples/perf/perf.c
@@ -136,7 +136,6 @@ CassCluster* create_cluster(const char* hosts) {
cass_cluster_set_contact_points(cluster, hosts);
cass_cluster_set_credentials(cluster, "cassandra", "cassandra");
cass_cluster_set_num_threads_io(cluster, NUM_IO_WORKER_THREADS);
- cass_cluster_set_queue_size_io(cluster, 10000);
cass_cluster_set_core_connections_per_shard(cluster, 1);
return cluster;
}
diff --git a/examples/schema_meta/schema_meta.c b/examples/schema_meta/schema_meta.c
index 8e956d27..38d250d6 100644
--- a/examples/schema_meta/schema_meta.c
+++ b/examples/schema_meta/schema_meta.c
@@ -204,8 +204,6 @@ void print_schema_value(const CassValue* value);
void print_schema_bytes(const CassValue* value);
void print_schema_list(const CassValue* value);
void print_schema_map(const CassValue* value);
-void print_meta_field(const CassIterator* iterator, int indent);
-void print_meta_fields(CassIterator* iterator, int indent);
void print_column_meta(const CassColumnMeta* meta, int indent);
void print_index_meta(const CassIndexMeta* meta, int indent);
@@ -318,27 +316,6 @@ void print_schema_map(const CassValue* value) {
cass_iterator_free(iterator);
}
-void print_meta_field(const CassIterator* iterator, int indent) {
- const char* name;
- size_t name_length;
- const CassValue* value;
-
- cass_iterator_get_meta_field_name(iterator, &name, &name_length);
- value = cass_iterator_get_meta_field_value(iterator);
-
- print_indent(indent);
- printf("%.*s: ", (int)name_length, name);
- print_schema_value(value);
- printf("\n");
-}
-
-void print_meta_fields(CassIterator* iterator, int indent) {
- while (cass_iterator_next(iterator)) {
- print_meta_field(iterator, indent);
- }
- cass_iterator_free(iterator);
-}
-
void print_keyspace_meta(const CassKeyspaceMeta* meta, int indent) {
const char* name;
size_t name_length;
@@ -348,9 +325,6 @@ void print_keyspace_meta(const CassKeyspaceMeta* meta, int indent) {
cass_keyspace_meta_name(meta, &name, &name_length);
printf("Keyspace \"%.*s\":\n", (int)name_length, name);
- print_meta_fields(cass_iterator_fields_from_keyspace_meta(meta), indent + 1);
- printf("\n");
-
iterator = cass_iterator_tables_from_keyspace_meta(meta);
while (cass_iterator_next(iterator)) {
print_table_meta(cass_iterator_get_table_meta(iterator), indent + 1);
@@ -369,9 +343,6 @@ void print_table_meta(const CassTableMeta* meta, int indent) {
cass_table_meta_name(meta, &name, &name_length);
printf("Table \"%.*s\":\n", (int)name_length, name);
- print_meta_fields(cass_iterator_fields_from_table_meta(meta), indent + 1);
- printf("\n");
-
iterator = cass_iterator_columns_from_table_meta(meta);
while (cass_iterator_next(iterator)) {
print_column_meta(cass_iterator_get_column_meta(iterator), indent + 1);
@@ -396,9 +367,6 @@ void print_function_meta(const CassFunctionMeta* meta, int indent) {
print_indent(indent);
cass_function_meta_name(meta, &name, &name_length);
printf("Function \"%.*s\":\n", (int)name_length, name);
-
- print_meta_fields(cass_iterator_fields_from_function_meta(meta), indent + 1);
- printf("\n");
}
void print_aggregate_meta(const CassAggregateMeta* meta, int indent) {
@@ -408,9 +376,6 @@ void print_aggregate_meta(const CassAggregateMeta* meta, int indent) {
print_indent(indent);
cass_aggregate_meta_name(meta, &name, &name_length);
printf("Aggregate \"%.*s\":\n", (int)name_length, name);
-
- print_meta_fields(cass_iterator_fields_from_aggregate_meta(meta), indent + 1);
- printf("\n");
}
void print_column_meta(const CassColumnMeta* meta, int indent) {
@@ -420,8 +385,6 @@ void print_column_meta(const CassColumnMeta* meta, int indent) {
print_indent(indent);
cass_column_meta_name(meta, &name, &name_length);
printf("Column \"%.*s\":\n", (int)name_length, name);
- print_meta_fields(cass_iterator_fields_from_column_meta(meta), indent + 1);
- printf("\n");
}
void print_index_meta(const CassIndexMeta* meta, int indent) {
@@ -431,6 +394,4 @@ void print_index_meta(const CassIndexMeta* meta, int indent) {
print_indent(indent);
cass_index_meta_name(meta, &name, &name_length);
printf("Index \"%.*s\":\n", (int)name_length, name);
- print_meta_fields(cass_iterator_fields_from_index_meta(meta), indent + 1);
- printf("\n");
}
diff --git a/include/cassandra.h b/include/cassandra.h
index f063c6e7..182b4d64 100644
--- a/include/cassandra.h
+++ b/include/cassandra.h
@@ -1632,6 +1632,8 @@ cass_cluster_set_ssl(CassCluster* cluster,
/**
* Sets custom authenticator
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCluster
*
* @param[in] cluster
@@ -1755,41 +1757,6 @@ CASS_EXPORT CassError
cass_cluster_set_num_threads_io(CassCluster* cluster,
unsigned num_threads);
-/**
- * Sets the size of the fixed size queue that stores
- * pending requests.
- *
- * Default: 8192
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] queue_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_cluster_set_queue_size_io(CassCluster* cluster,
- unsigned queue_size);
-
-/**
- * Sets the size of the fixed size queue that stores
- * events.
- *
- * Default: 8192
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] queue_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_queue_size_event(CassCluster* cluster,
- unsigned queue_size));
-
/**
* Sets the number of connections opened by the driver to each host.
*
@@ -1831,25 +1798,6 @@ CASS_EXPORT CassError
cass_cluster_set_core_connections_per_shard(CassCluster* cluster,
unsigned num_connections);
-/**
- * Sets the maximum number of connections made to each server in each
- * IO thread.
- *
- * Default: 2
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_connections
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_max_connections_per_host(CassCluster* cluster,
- unsigned num_connections));
-
/**
* Sets the amount of time to wait before attempting to reconnect.
*
@@ -1871,6 +1819,8 @@ cass_cluster_set_reconnect_wait_time(CassCluster* cluster,
*
* @public @memberof CassCluster
*
+ * Warning: This function is not yet implemented.
+ *
* @param[in] cluster
* @param[in] delay_ms Time in milliseconds to delay attempting a reconnection;
* 0 to perform a reconnection immediately.
@@ -1884,6 +1834,8 @@ cass_cluster_set_constant_reconnect(CassCluster* cluster,
* longer between each reconnection attempt; however will maintain a constant
* delay once the maximum delay is reached.
*
+ * Warning: This function is not yet implemented.
+ *
* Default:
*
* - 2000 milliseconds base delay
@@ -1942,165 +1894,6 @@ CASS_EXPORT CassError
cass_cluster_set_coalesce_delay(CassCluster* cluster,
cass_int64_t delay_us);
-/**
- * Sets the ratio of time spent processing new requests versus handling the I/O
- * and processing of outstanding requests. The range of this setting is 1 to 100,
- * where larger values allocate more time to processing new requests and smaller
- * values allocate more time to processing outstanding requests.
- *
- * Default: 50
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] ratio
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_cluster_set_new_request_ratio(CassCluster* cluster,
- cass_int32_t ratio);
-
-/**
- * Sets the maximum number of connections that will be created concurrently.
- * Connections are created when the current connections are unable to keep up with
- * request throughput.
- *
- * Default: 1
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_connections
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_max_concurrent_creation(CassCluster* cluster,
- unsigned num_connections));
-
-/**
- * Sets the threshold for the maximum number of concurrent requests in-flight
- * on a connection before creating a new connection. The number of new connections
- * created will not exceed max_connections_per_host.
- *
- * Default: 100
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_requests
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_max_concurrent_requests_threshold(CassCluster* cluster,
- unsigned num_requests));
-
-/**
- * Sets the maximum number of requests processed by an IO worker
- * per flush.
- *
- * Default: 128
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_requests
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_max_requests_per_flush(CassCluster* cluster,
- unsigned num_requests));
-
-/**
- * Sets the high water mark for the number of bytes outstanding
- * on a connection. Disables writes to a connection if the number
- * of bytes queued exceed this value.
- *
- * Default: 64 KB
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_bytes
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_write_bytes_high_water_mark(CassCluster* cluster,
- unsigned num_bytes));
-
-/**
- * Sets the low water mark for number of bytes outstanding on a
- * connection. After exceeding high water mark bytes, writes will
- * only resume once the number of bytes fall below this value.
- *
- * Default: 32 KB
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_bytes
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_write_bytes_low_water_mark(CassCluster* cluster,
- unsigned num_bytes));
-
-/**
- * Sets the high water mark for the number of requests queued waiting
- * for a connection in a connection pool. Disables writes to a
- * host on an IO worker if the number of requests queued exceed this
- * value.
- *
- * Default: 256
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_requests
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_pending_requests_high_water_mark(CassCluster* cluster,
- unsigned num_requests));
-
-/**
- * Sets the low water mark for the number of requests queued waiting
- * for a connection in a connection pool. After exceeding high water mark
- * requests, writes to a host will only resume once the number of requests
- * fall below this value.
- *
- * Default: 128
- *
- * @public @memberof CassCluster
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] cluster
- * @param[in] num_requests
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CASS_DEPRECATED(CassError
-cass_cluster_set_pending_requests_low_water_mark(CassCluster* cluster,
- unsigned num_requests));
-
/**
* Sets the timeout for connecting to a node.
*
@@ -2132,6 +1925,8 @@ cass_cluster_set_request_timeout(CassCluster* cluster,
/**
* Sets the timeout for waiting for DNS name resolution.
*
+ * Warning: This function is not yet implemented.
+ *
* Default: 2000 milliseconds
*
* @public @memberof CassCluster
@@ -2173,45 +1968,6 @@ CASS_EXPORT void
cass_cluster_set_schema_agreement_interval(CassCluster* cluster,
unsigned interval_ms);
-/**
- * Sets the maximum time to wait for tracing data to become available.
- *
- * Default: 15 milliseconds
- *
- * @param[in] cluster
- * @param[in] max_wait_time_ms
- */
-CASS_EXPORT void
-cass_cluster_set_tracing_max_wait_time(CassCluster* cluster,
- unsigned max_wait_time_ms);
-
-/**
- * Sets the amount of time to wait between attempts to check to see if tracing is
- * available.
- *
- * Default: 3 milliseconds
- *
- * @param[in] cluster
- * @param[in] retry_wait_time_ms
- */
-CASS_EXPORT void
-cass_cluster_set_tracing_retry_wait_time(CassCluster* cluster,
- unsigned retry_wait_time_ms);
-
-/**
- * Sets the consistency level to use for checking to see if tracing data is
- * available.
- *
- * Default: CASS_CONSISTENCY_ONE
- *
- * @param[in] cluster
- * @param[in] consistency
- */
-CASS_EXPORT void
-cass_cluster_set_tracing_consistency(CassCluster* cluster,
- CassConsistency consistency);
-
-
/**
* Sets credentials for plain text authentication.
*
@@ -2726,29 +2482,11 @@ CASS_EXPORT void
cass_cluster_set_use_schema(CassCluster* cluster,
cass_bool_t enabled);
-/**
- * Enable/Disable retrieving hostnames for IP addresses using reverse IP lookup.
- *
- * This is useful for authentication (Kerberos) or encryption (SSL) services
- * that require a valid hostname for verification.
- *
- * Default: cass_false (disabled).
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] enabled
- * @return CASS_OK if successful, otherwise an error occurred
- *
- * @see cass_cluster_set_resolve_timeout()
- */
-CASS_EXPORT CassError
-cass_cluster_set_use_hostname_resolution(CassCluster* cluster,
- cass_bool_t enabled);
-
/**
* Enable/Disable the randomization of the contact points list.
*
+ * Warning: This function is not yet implemented.
+ *
* Default: cass_true (enabled).
*
* Important: This setting should only be disabled for debugging or
@@ -2792,27 +2530,6 @@ cass_cluster_set_constant_speculative_execution_policy(CassCluster* cluster,
CASS_EXPORT CassError
cass_cluster_set_no_speculative_execution_policy(CassCluster* cluster);
-/**
- * Sets the maximum number of "pending write" objects that will be
- * saved for re-use for marshalling new requests. These objects may
- * hold on to a significant amount of memory and reducing the
- * number of these objects may reduce memory usage of the application.
- *
- * The cost of reducing the value of this setting is potentially slower
- * marshalling of requests prior to sending.
- *
- * Default: Max unsigned integer value
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] num_objects
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_cluster_set_max_reusable_write_objects(CassCluster* cluster,
- unsigned num_objects);
-
/**
* Associates a named execution profile which can be utilized during execution.
*
@@ -2860,6 +2577,8 @@ cass_cluster_set_execution_profile_n(CassCluster* cluster,
/**
* Prepare statements on all available hosts.
*
+ * Warning: This function is not yet implemented.
+ *
* Default: cass_true
*
* @public @memberof CassCluster
@@ -2872,51 +2591,11 @@ CASS_EXPORT CassError
cass_cluster_set_prepare_on_all_hosts(CassCluster* cluster,
cass_bool_t enabled);
-/**
- * Enable pre-preparing cached prepared statements when existing hosts become
- * available again or when new hosts are added to the cluster.
- *
- * This can help mitigate request latency when executing prepared statements
- * by avoiding an extra round trip in cases where the statement is
- * unprepared on a freshly started server. The main tradeoff is extra background
- * network traffic is required to prepare the statements on hosts as they become
- * available.
- *
- * Default: cass_true
- *
- * @param cluster
- * @param enabled
- * @return CASS_OK if successful, otherwise an error occurred
- */
-CASS_EXPORT CassError
-cass_cluster_set_prepare_on_up_or_add_host(CassCluster* cluster,
- cass_bool_t enabled);
-
-/**
- * Enable the NO_COMPACT startup option.
- *
- * This can help facilitate uninterrupted cluster upgrades where tables using
- * COMPACT_STORAGE will operate in "compatibility mode" for
- * BATCH, DELETE, SELECT, and UPDATE CQL operations.
- *
- * Default: cass_false
- *
- * @cassandra{3.0.16+}
- * @cassandra{3.11.2+}
- * @cassandra{4.0+}
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] enabled
- */
-CASS_EXPORT CassError
-cass_cluster_set_no_compact(CassCluster* cluster,
- cass_bool_t enabled);
-
/**
* Sets a callback for handling host state changes in the cluster.
*
+ * Warning: This function is not yet implemented.
+ *
* Note: The callback is invoked only when state changes in the cluster
* are applicable to the configured load balancing policy(s).
*
@@ -2932,71 +2611,6 @@ cass_cluster_set_host_listener_callback(CassCluster* cluster,
CassHostListenerCallback callback,
void* data);
-/**
- * Sets the secure connection bundle path for processing DBaaS credentials.
- *
- * This will pre-configure a cluster using the credentials format provided by
- * the DBaaS cloud provider.
- *
- * @param[in] cluster
- * @param[in] path Absolute path to DBaaS credentials file.
- * @return CASS_OK if successful, otherwise error occured.
- */
-CASS_EXPORT CassError
-cass_cluster_set_cloud_secure_connection_bundle(CassCluster* cluster,
- const char* path);
-
-/**
- * Same as cass_cluster_set_cloud_secure_connection_bundle(), but with lengths
- * for string parameters.
- *
- * @see cass_cluster_set_cloud_secure_connection_bundle()
- *
- * @param[in] cluster
- * @param[in] path Absolute path to DBaaS credentials file.
- * @param[in] path_length Length of path variable.
- * @return CASS_OK if successful, otherwise error occured.
- */
-CASS_EXPORT CassError
-cass_cluster_set_cloud_secure_connection_bundle_n(CassCluster* cluster,
- const char* path,
- size_t path_length);
-
-/**
- * Same as cass_cluster_set_cloud_secure_connection_bundle(), but it does not
- * initialize the underlying SSL library implementation. The SSL library still
- * needs to be initialized, but it's up to the client application to handle
- * initialization. This is similar to the function cass_ssl_new_no_lib_init(),
- * and its documentation should be used as a reference to properly initialize
- * the underlying SSL library.
- *
- * @see cass_ssl_new_no_lib_init()
- * @see cass_cluster_set_cloud_secure_connection_bundle()
- *
- * @param[in] cluster
- * @param[in] path Absolute path to DBaaS credentials file.
- * @return CASS_OK if successful, otherwise error occured.
- */
-CASS_EXPORT CassError
-cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(CassCluster* cluster,
- const char* path);
-
-/**
- * Same as cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(),
- * but with lengths for string parameters.
- *
- * @see cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init()
- *
- * @param[in] cluster
- * @param[in] path Absolute path to DBaaS credentials file.
- * @param[in] path_length Length of path variable.
- * @return CASS_OK if successful, otherwise error occured.
- */
-CASS_EXPORT CassError
-cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init_n(CassCluster* cluster,
- const char* path,
- size_t path_length);
-
/**
* Set the application name.
*
@@ -3078,20 +2692,6 @@ cass_cluster_set_application_version_n(CassCluster* cluster,
CASS_EXPORT void
cass_cluster_set_client_id(CassCluster* cluster, CassUuid client_id);
-/**
- * Sets the amount of time between monitor reporting event messages.
- *
- * Default: 300 seconds.
- *
- * @public @memberof CassCluster
- *
- * @param[in] cluster
- * @param[in] interval_secs Use 0 to disable monitor reporting event messages.
- */
-CASS_EXPORT void
-cass_cluster_set_monitor_reporting_interval(CassCluster* cluster,
- unsigned interval_secs);
-
/**
* Sets the preferred compression algorithm.
* Default: no compression.
@@ -3340,6 +2940,8 @@ cass_session_get_metrics(const CassSession* session,
/**
* Gets a copy of this session's speculative execution metrics.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassSession
*
* @param[in] session
@@ -3379,6 +2981,8 @@ cass_schema_meta_free(const CassSchemaMeta* schema_meta);
/**
* Gets the version of the schema metadata snapshot.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassSchemaMeta
*
* @param[in] schema_meta
@@ -3391,6 +2995,8 @@ cass_schema_meta_snapshot_version(const CassSchemaMeta* schema_meta);
/**
* Gets the version of the connected Cassandra cluster.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassSchemaMeta
*
* @param[in] schema_meta
@@ -3632,38 +3238,6 @@ cass_keyspace_meta_aggregate_by_name_n(const CassKeyspaceMeta* keyspace_meta,
const char* arguments,
size_t arguments_length);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "keyspaces" metadata table.
- *
- * @public @memberof CassKeyspaceMeta
- *
- * @param[in] keyspace_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_keyspace_meta_field_by_name(const CassKeyspaceMeta* keyspace_meta,
- const char* name);
-
-/**
- * Same as cass_keyspace_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassKeyspaceMeta
- *
- * @param[in] keyspace_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_keyspace_meta_field_by_name()
- *
- * @see cass_keyspace_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_keyspace_meta_field_by_name_n(const CassKeyspaceMeta* keyspace_meta,
- const char* name,
- size_t name_length);
-
/**
* Gets the name of the table.
*
@@ -3681,6 +3255,8 @@ cass_table_meta_name(const CassTableMeta* table_meta,
/**
* Determine if the table is a virtual table.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -3748,6 +3324,8 @@ cass_table_meta_column(const CassTableMeta* table_meta,
/**
* Gets the index metadata for the provided index name.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -3763,6 +3341,8 @@ cass_table_meta_index_by_name(const CassTableMeta* table_meta,
* Same as cass_table_meta_index_by_name(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -3780,6 +3360,8 @@ cass_table_meta_index_by_name_n(const CassTableMeta* table_meta,
/**
* Gets the total number of indexes for the table.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -3912,6 +3494,8 @@ cass_table_meta_clustering_key(const CassTableMeta* table_meta,
/**
* Gets the clustering order column metadata for the provided index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -3925,38 +3509,6 @@ CASS_EXPORT CassClusteringOrder
cass_table_meta_clustering_key_order(const CassTableMeta* table_meta,
size_t index);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "tables" metadata table.
- *
- * @public @memberof CassTableMeta
- *
- * @param[in] table_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_table_meta_field_by_name(const CassTableMeta* table_meta,
- const char* name);
-
-/**
- * Same as cass_table_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassTableMeta
- *
- * @param[in] table_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_table_meta_field_by_name()
- *
- * @see cass_table_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_table_meta_field_by_name_n(const CassTableMeta* table_meta,
- const char* name,
- size_t name_length);
-
/**
* Gets the column metadata for the provided column name.
*
@@ -4085,55 +3637,25 @@ cass_materialized_view_meta_clustering_key_count(const CassMaterializedViewMeta*
*/
CASS_EXPORT const CassColumnMeta*
cass_materialized_view_meta_clustering_key(const CassMaterializedViewMeta* view_meta,
- size_t index);
-
-/**
- * Gets the clustering order column metadata for the provided index.
- *
- * @public @memberof CassMaterializedViewMeta
- *
- * @param[in] view_meta
- * @param[in] index
- * @return The clustering order for a column.
- * CASS_CLUSTERING_ORDER_NONE returned if the index is out of range.
- *
- * @see cass_materialized_view_meta_clustering_key_count()
- */
-CASS_EXPORT CassClusteringOrder
-cass_materialized_view_meta_clustering_key_order(const CassMaterializedViewMeta* view_meta,
- size_t index);
-
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "views" metadata view.
- *
- * @public @memberof CassMaterializedViewMeta
- *
- * @param[in] view_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_materialized_view_meta_field_by_name(const CassMaterializedViewMeta* view_meta,
- const char* name);
+ size_t index);
/**
- * Same as cass_materialized_view_meta_field_by_name(), but with lengths for string
- * parameters.
+ * Gets the clustering order column metadata for the provided index.
+ *
+ * Warning: This function is not yet implemented.
*
* @public @memberof CassMaterializedViewMeta
*
* @param[in] view_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_materialized_view_meta_field_by_name()
+ * @param[in] index
+ * @return The clustering order for a column.
+ * CASS_CLUSTERING_ORDER_NONE returned if the index is out of range.
*
- * @see cass_materialized_view_meta_field_by_name()
+ * @see cass_materialized_view_meta_clustering_key_count()
*/
-CASS_EXPORT const CassValue*
-cass_materialized_view_meta_field_by_name_n(const CassMaterializedViewMeta* view_meta,
- const char* name,
- size_t name_length);
+CASS_EXPORT CassClusteringOrder
+cass_materialized_view_meta_clustering_key_order(const CassMaterializedViewMeta* view_meta,
+ size_t index);
/**
* Gets the name of the column.
@@ -4171,41 +3693,11 @@ cass_column_meta_type(const CassColumnMeta* column_meta);
CASS_EXPORT const CassDataType*
cass_column_meta_data_type(const CassColumnMeta* column_meta);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "columns" metadata table.
- *
- * @public @memberof CassColumnMeta
- *
- * @param[in] column_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_column_meta_field_by_name(const CassColumnMeta* column_meta,
- const char* name);
-
-/**
- * Same as cass_column_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassColumnMeta
- *
- * @param[in] column_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_column_meta_field_by_name()
- *
- * @see cass_column_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_column_meta_field_by_name_n(const CassColumnMeta* column_meta,
- const char* name,
- size_t name_length);
-
/**
* Gets the name of the index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIndexMeta
*
* @param[in] index_meta
@@ -4220,6 +3712,8 @@ cass_index_meta_name(const CassIndexMeta* index_meta,
/**
* Gets the type of the index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIndexMeta
*
* @param[in] index_meta
@@ -4231,6 +3725,8 @@ cass_index_meta_type(const CassIndexMeta* index_meta);
/**
* Gets the target of the index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIndexMeta
*
* @param[in] index_meta
@@ -4245,6 +3741,8 @@ cass_index_meta_target(const CassIndexMeta* index_meta,
/**
* Gets the options of the index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIndexMeta
*
* @param[in] index_meta
@@ -4253,41 +3751,11 @@ cass_index_meta_target(const CassIndexMeta* index_meta,
CASS_EXPORT const CassValue*
cass_index_meta_options(const CassIndexMeta* index_meta);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the index data found in the underlying "indexes" metadata table.
- *
- * @public @memberof CassIndexMeta
- *
- * @param[in] index_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_index_meta_field_by_name(const CassIndexMeta* index_meta,
- const char* name);
-
-/**
- * Same as cass_index_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassIndexMeta
- *
- * @param[in] index_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_index_meta_field_by_name()
- *
- * @see cass_index_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_index_meta_field_by_name_n(const CassIndexMeta* index_meta,
- const char* name,
- size_t name_length);
-
/**
* Gets the name of the function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4304,6 +3772,8 @@ cass_function_meta_name(const CassFunctionMeta* function_meta,
* function's name and the function's signature:
* "name(type1 type2.. typeN)".
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4318,6 +3788,8 @@ cass_function_meta_full_name(const CassFunctionMeta* function_meta,
/**
* Gets the body of the function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4332,6 +3804,8 @@ cass_function_meta_body(const CassFunctionMeta* function_meta,
/**
* Gets the language of the function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4346,6 +3820,8 @@ cass_function_meta_language(const CassFunctionMeta* function_meta,
/**
* Gets whether a function is called on "null".
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4357,6 +3833,8 @@ cass_function_meta_called_on_null_input(const CassFunctionMeta* function_meta);
/**
* Gets the number of arguments this function takes.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4368,6 +3846,8 @@ cass_function_meta_argument_count(const CassFunctionMeta* function_meta);
/**
* Gets the function's argument name and type for the provided index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4387,6 +3867,8 @@ cass_function_meta_argument(const CassFunctionMeta* function_meta,
/**
* Gets the function's argument and type for the provided name.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4401,6 +3883,8 @@ cass_function_meta_argument_type_by_name(const CassFunctionMeta* function_meta,
* Same as cass_function_meta_argument_type_by_name(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4418,6 +3902,8 @@ cass_function_meta_argument_type_by_name_n(const CassFunctionMeta* function_meta
/**
* Gets the return type of the function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFunctionMeta
*
* @param[in] function_meta
@@ -4426,41 +3912,11 @@ cass_function_meta_argument_type_by_name_n(const CassFunctionMeta* function_meta
CASS_EXPORT const CassDataType*
cass_function_meta_return_type(const CassFunctionMeta* function_meta);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "functions" metadata table.
- *
- * @public @memberof CassFunctionMeta
- *
- * @param[in] function_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_function_meta_field_by_name(const CassFunctionMeta* function_meta,
- const char* name);
-
-/**
- * Same as cass_function_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassFunctionMeta
- *
- * @param[in] function_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_function_meta_field_by_name()
- *
- * @see cass_function_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_function_meta_field_by_name_n(const CassFunctionMeta* function_meta,
- const char* name,
- size_t name_length);
-
/**
* Gets the name of the aggregate.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4477,6 +3933,8 @@ cass_aggregate_meta_name(const CassAggregateMeta* aggregate_meta,
* aggregate's name and the aggregate's signature:
* "name(type1 type2.. typeN)".
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4491,6 +3949,8 @@ cass_aggregate_meta_full_name(const CassAggregateMeta* aggregate_meta,
/**
* Gets the number of arguments this aggregate takes.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4502,6 +3962,8 @@ cass_aggregate_meta_argument_count(const CassAggregateMeta* aggregate_meta);
/**
* Gets the aggregate's argument type for the provided index.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4515,6 +3977,8 @@ cass_aggregate_meta_argument_type(const CassAggregateMeta* aggregate_meta,
/**
* Gets the return type of the aggregate.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4526,6 +3990,8 @@ cass_aggregate_meta_return_type(const CassAggregateMeta* aggregate_meta);
/**
* Gets the state type of the aggregate.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4537,6 +4003,8 @@ cass_aggregate_meta_state_type(const CassAggregateMeta* aggregate_meta);
/**
* Gets the function metadata for the aggregate's state function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4548,6 +4016,8 @@ cass_aggregate_meta_state_func(const CassAggregateMeta* aggregate_meta);
/**
* Gets the function metadata for the aggregates's final function.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAggregateMeta
*
* @param[in] aggregate_meta
@@ -4559,6 +4029,8 @@ cass_aggregate_meta_final_func(const CassAggregateMeta* aggregate_meta);
/**
* Gets the initial condition value for the aggregate.
*
+ * Warning: This function is not yet implemented.
+ *
* Note: The value of the initial condition will always be
* a "varchar" type for Cassandra 3.0+.
*
@@ -4570,38 +4042,6 @@ cass_aggregate_meta_final_func(const CassAggregateMeta* aggregate_meta);
CASS_EXPORT const CassValue*
cass_aggregate_meta_init_cond(const CassAggregateMeta* aggregate_meta);
-/**
- * Gets a metadata field for the provided name. Metadata fields allow direct
- * access to the column data found in the underlying "aggregates" metadata table.
- *
- * @public @memberof CassAggregateMeta
- *
- * @param[in] aggregate_meta
- * @param[in] name
- * @return A metadata field value. NULL if the field does not exist.
- */
-CASS_EXPORT const CassValue*
-cass_aggregate_meta_field_by_name(const CassAggregateMeta* aggregate_meta,
- const char* name);
-
-/**
- * Same as cass_aggregate_meta_field_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassAggregateMeta
- *
- * @param[in] aggregate_meta
- * @param[in] name
- * @param[in] name_length
- * @return same as cass_aggregate_meta_field_by_name()
- *
- * @see cass_aggregate_meta_field_by_name()
- */
-CASS_EXPORT const CassValue*
-cass_aggregate_meta_field_by_name_n(const CassAggregateMeta* aggregate_meta,
- const char* name,
- size_t name_length);
-
/***********************************************************************************
*
* SSL
@@ -4799,6 +4239,8 @@ cass_ssl_set_private_key_n(CassSsl* ssl,
/**
* Gets the IP address of the host being authenticated.
*
+ * Warning: This function is not yet implemented.
+ *
* @param[in] auth
* @param[out] address
*
@@ -4811,6 +4253,8 @@ cass_authenticator_address(const CassAuthenticator* auth,
/**
* Gets the hostname of the host being authenticated.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4824,6 +4268,8 @@ cass_authenticator_hostname(const CassAuthenticator* auth,
/**
* Gets the class name for the server-side IAuthentication implementation.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4838,6 +4284,8 @@ cass_authenticator_class_name(const CassAuthenticator* auth,
* Gets the user data created during the authenticator exchange. This
* is set using cass_authenticator_set_exchange_data().
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4852,6 +4300,8 @@ cass_authenticator_exchange_data(CassAuthenticator* auth);
/**
* Sets the user data to be used during the authenticator exchange.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4866,6 +4316,8 @@ cass_authenticator_set_exchange_data(CassAuthenticator* auth,
/**
* Gets a response token buffer of the provided size.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4879,6 +4331,8 @@ cass_authenticator_response(CassAuthenticator* auth,
/**
* Sets the response token.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4893,6 +4347,8 @@ cass_authenticator_set_response(CassAuthenticator* auth,
/**
* Sets an error for the authenticator exchange.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassAuthenticator
*
* @param[in] auth
@@ -4908,6 +4364,8 @@ cass_authenticator_set_error(CassAuthenticator* auth,
*
* @public @memberof CassAuthenticator
*
+ * Warning: This function is not yet implemented.
+ *
* @param[in] auth
* @param[in] message
* @param[in] message_length
@@ -5079,6 +4537,8 @@ cass_future_tracing_id(CassFuture* future,
* Gets a the number of custom payload items from a response future. If the future is not
* ready this method will wait for the future to be set.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFuture
*
* @param[in] future
@@ -5091,6 +4551,8 @@ cass_future_custom_payload_item_count(CassFuture* future);
* Gets a custom payload item from a response future at the specified index. If the future is not
* ready this method will wait for the future to be set.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassFuture
*
* @param[in] future
@@ -5190,27 +4652,6 @@ cass_statement_reset_parameters(CassStatement* statement,
CASS_EXPORT void
cass_statement_free(CassStatement* statement);
-/**
- * Adds a key index specifier to this a statement.
- * When using token-aware routing, this can be used to tell the driver which
- * parameters within a non-prepared, parameterized statement are part of
- * the partition key.
- *
- * Use consecutive calls for composite partition keys.
- *
- * This is not necessary for prepared statements, as the key
- * parameters are determined in the metadata processed in the prepare phase.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] index
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_statement_add_key_index(CassStatement* statement,
- size_t index);
-
/**
* Sets the statement's keyspace. This is used for token-aware routing and when
* using protocol v5 or greater it also overrides the session's current
@@ -5219,6 +4660,8 @@ cass_statement_add_key_index(CassStatement* statement,
* This is not necessary and will not work for bound statements, as the keyspace
* is determined by the prepared statement metadata.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassStatement
*
* @param[in] statement
@@ -5233,6 +4676,8 @@ cass_statement_set_keyspace(CassStatement* statement,
* Same as cass_statement_set_keyspace(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassStatement
*
* @param[in] statement
@@ -5392,6 +4837,8 @@ cass_statement_set_retry_policy(CassStatement* statement,
/**
* Sets the statement's custom payload.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassStatement
*
* @param[in] statement
@@ -6013,161 +5460,77 @@ cass_statement_bind_string_n(CassStatement* statement,
* @public @memberof CassStatement
*
* @param[in] statement
- * @param[in] name
- * @param[in] value The value is copied into the statement object; the
- * memory pointed to by this parameter can be freed after this call.
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_statement_bind_string_by_name(CassStatement* statement,
- const char* name,
- const char* value);
-
-/**
- * Same as cass_statement_bind_string_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] name
- * @param[in] name_length
- * @param[in] value
- * @param[in] value_length
- * @return same as cass_statement_bind_string_by_name()
- *
- * @see cass_statement_bind_string_by_name()
- */
-CASS_EXPORT CassError
-cass_statement_bind_string_by_name_n(CassStatement* statement,
- const char* name,
- size_t name_length,
- const char* value,
- size_t value_length);
-
-/**
- * Binds a "blob", "varint" or "custom" to a query or bound statement at the specified index.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] index
- * @param[in] value The value is copied into the statement object; the
- * memory pointed to by this parameter can be freed after this call.
- * @param[in] value_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_statement_bind_bytes(CassStatement* statement,
- size_t index,
- const cass_byte_t* value,
- size_t value_size);
-
-/**
- * Binds a "blob", "varint" or "custom" to all the values with the
- * specified name.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] name
- * @param[in] value The value is copied into the statement object; the
- * memory pointed to by this parameter can be freed after this call.
- * @param[in] value_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_statement_bind_bytes_by_name(CassStatement* statement,
- const char* name,
- const cass_byte_t* value,
- size_t value_size);
-
-/**
- * Same as cass_statement_bind_bytes_by_name(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] name
- * @param[in] name_length
- * @param[in] value
- * @param[in] value_size
- * @return same as cass_statement_bind_bytes_by_name()
- *
- * @see cass_statement_bind_bytes_by_name()
- */
-CASS_EXPORT CassError
-cass_statement_bind_bytes_by_name_n(CassStatement* statement,
- const char* name,
- size_t name_length,
- const cass_byte_t* value,
- size_t value_size);
-
-/**
- * Binds a "custom" to a query or bound statement at the specified index.
- *
- * @public @memberof CassStatement
- *
- * @param[in] statement
- * @param[in] index
- * @param[in] class_name
+ * @param[in] name
* @param[in] value The value is copied into the statement object; the
* memory pointed to by this parameter can be freed after this call.
- * @param[in] value_size
* @return CASS_OK if successful, otherwise an error occurred.
*/
CASS_EXPORT CassError
-cass_statement_bind_custom(CassStatement* statement,
- size_t index,
- const char* class_name,
- const cass_byte_t* value,
- size_t value_size);
+cass_statement_bind_string_by_name(CassStatement* statement,
+ const char* name,
+ const char* value);
+
/**
- * Same as cass_statement_bind_custom(), but with lengths for string
+ * Same as cass_statement_bind_string_by_name(), but with lengths for string
* parameters.
*
* @public @memberof CassStatement
*
* @param[in] statement
+ * @param[in] name
+ * @param[in] name_length
+ * @param[in] value
+ * @param[in] value_length
+ * @return same as cass_statement_bind_string_by_name()
+ *
+ * @see cass_statement_bind_string_by_name()
+ */
+CASS_EXPORT CassError
+cass_statement_bind_string_by_name_n(CassStatement* statement,
+ const char* name,
+ size_t name_length,
+ const char* value,
+ size_t value_length);
+
+/**
+ * Binds a "blob", "varint" or "custom" to a query or bound statement at the specified index.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
* @param[in] index
- * @param[in] class_name
- * @param[in] class_name_length
* @param[in] value The value is copied into the statement object; the
* memory pointed to by this parameter can be freed after this call.
* @param[in] value_size
* @return CASS_OK if successful, otherwise an error occurred.
*/
CASS_EXPORT CassError
-cass_statement_bind_custom_n(CassStatement* statement,
- size_t index,
- const char* class_name,
- size_t class_name_length,
- const cass_byte_t* value,
- size_t value_size);
+cass_statement_bind_bytes(CassStatement* statement,
+ size_t index,
+ const cass_byte_t* value,
+ size_t value_size);
/**
- * Binds a "custom" to all the values with the specified name.
+ * Binds a "blob", "varint" or "custom" to all the values with the
+ * specified name.
*
* @public @memberof CassStatement
*
* @param[in] statement
* @param[in] name
- * @param[in] class_name
* @param[in] value The value is copied into the statement object; the
* memory pointed to by this parameter can be freed after this call.
* @param[in] value_size
* @return CASS_OK if successful, otherwise an error occurred.
*/
CASS_EXPORT CassError
-cass_statement_bind_custom_by_name(CassStatement* statement,
- const char* name,
- const char* class_name,
- const cass_byte_t* value,
- size_t value_size);
+cass_statement_bind_bytes_by_name(CassStatement* statement,
+ const char* name,
+ const cass_byte_t* value,
+ size_t value_size);
/**
- * Same as cass_statement_bind_custom_by_name(), but with lengths for string
+ * Same as cass_statement_bind_bytes_by_name(), but with lengths for string
* parameters.
*
* @public @memberof CassStatement
@@ -6175,22 +5538,18 @@ cass_statement_bind_custom_by_name(CassStatement* statement,
* @param[in] statement
* @param[in] name
* @param[in] name_length
- * @param[in] class_name
- * @param[in] class_name_length
* @param[in] value
* @param[in] value_size
- * @return same as cass_statement_bind_custom_by_name()
+ * @return same as cass_statement_bind_bytes_by_name()
*
- * @see cass_statement_bind_custom_by_name()
+ * @see cass_statement_bind_bytes_by_name()
*/
CASS_EXPORT CassError
-cass_statement_bind_custom_by_name_n(CassStatement* statement,
- const char* name,
- size_t name_length,
- const char* class_name,
- size_t class_name_length,
- const cass_byte_t* value,
- size_t value_size);
+cass_statement_bind_bytes_by_name_n(CassStatement* statement,
+ const char* name,
+ size_t name_length,
+ const cass_byte_t* value,
+ size_t value_size);
/**
* Binds a "uuid" or "timeuuid" to a query or bound statement at the specified index.
@@ -6708,6 +6067,8 @@ cass_batch_free(CassBatch* batch);
* Note: If not set explicitly then the batch will inherit the keyspace
* of the first child statement with a non-empty keyspace.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassBatch
*
* @param[in] batch
@@ -6722,6 +6083,8 @@ cass_batch_set_keyspace(CassBatch* batch,
* Same as cass_batch_set_keyspace(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassBatch
*
* @param[in] batch
@@ -6831,6 +6194,8 @@ cass_batch_set_retry_policy(CassBatch* batch,
/**
* Sets the batch's custom payload.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassBatch
*
* @param[in] batch
@@ -7518,46 +6883,6 @@ cass_collection_append_bytes(CassCollection* collection,
const cass_byte_t* value,
size_t value_size);
-/**
- * Appends a "custom" to the collection.
- *
- * @public @memberof CassCollection
- *
- * @param[in] collection
- * @param[in] class_name
- * @param[in] value The value is copied into the collection object; the
- * memory pointed to by this parameter can be freed after this call.
- * @param[in] value_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_collection_append_custom(CassCollection* collection,
- const char* class_name,
- const cass_byte_t* value,
- size_t value_size);
-
-/**
- * Same as cass_collection_append_custom(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassCollection
- *
- * @param[in] collection
- * @param[in] class_name
- * @param[in] class_name_length
- * @param[in] value
- * @param[in] value_size
- * @return same as cass_collection_append_custom()
- *
- * @see cass_collection_append_custom()
- */
-CASS_EXPORT CassError
-cass_collection_append_custom_n(CassCollection* collection,
- const char* class_name,
- size_t class_name_length,
- const cass_byte_t* value,
- size_t value_size);
-
/**
* Appends a "uuid" or "timeuuid" to the collection.
*
@@ -7899,50 +7224,6 @@ cass_tuple_set_bytes(CassTuple* tuple,
const cass_byte_t* value,
size_t value_size);
-/**
- * Sets a "custom" in a tuple at the specified index.
- *
- * @public @memberof CassTuple
- *
- * @param[in] tuple
- * @param[in] index
- * @param[in] class_name
- * @param[in] value The value is copied into the tuple object; the
- * memory pointed to by this parameter can be freed after this call.
- * @param[in] value_size
- * @return CASS_OK if successful, otherwise an error occurred.
- */
-CASS_EXPORT CassError
-cass_tuple_set_custom(CassTuple* tuple,
- size_t index,
- const char* class_name,
- const cass_byte_t* value,
- size_t value_size);
-
-/**
- * Same as cass_tuple_set_custom(), but with lengths for string
- * parameters.
- *
- * @public @memberof CassTuple
- *
- * @param[in] tuple
- * @param[in] index
- * @param[in] class_name
- * @param[in] class_name_length
- * @param[in] value
- * @param[in] value_size
- * @return same as cass_tuple_set_custom()
- *
- * @see cass_tuple_set_custom()
- */
-CASS_EXPORT CassError
-cass_tuple_set_custom_n(CassTuple* tuple,
- size_t index,
- const char* class_name,
- size_t class_name_length,
- const cass_byte_t* value,
- size_t value_size);
-
/**
* Sets a "uuid" or "timeuuid" in a tuple at the specified index.
*
@@ -9685,6 +8966,8 @@ cass_iterator_user_types_from_keyspace_meta(const CassKeyspaceMeta* keyspace_met
* Creates a new iterator for the specified keyspace metadata.
* This can be used to iterate over functions.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassKeyspaceMeta
*
* @param[in] keyspace_meta
@@ -9700,6 +8983,8 @@ cass_iterator_functions_from_keyspace_meta(const CassKeyspaceMeta* keyspace_meta
* Creates a new iterator for the specified keyspace metadata.
* This can be used to iterate over aggregates.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassKeyspaceMeta
*
* @param[in] keyspace_meta
@@ -9711,24 +8996,6 @@ cass_iterator_functions_from_keyspace_meta(const CassKeyspaceMeta* keyspace_meta
CASS_EXPORT CassIterator*
cass_iterator_aggregates_from_keyspace_meta(const CassKeyspaceMeta* keyspace_meta);
-/**
- * Creates a new fields iterator for the specified keyspace metadata. Metadata
- * fields allow direct access to the column data found in the underlying
- * "keyspaces" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassKeyspaceMeta
- *
- * @param[in] keyspace_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field_name()
- * @see cass_iterator_get_meta_field_value()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_keyspace_meta(const CassKeyspaceMeta* keyspace_meta);
-
/**
* Creates a new iterator for the specified table metadata.
* This can be used to iterate over columns.
@@ -9748,6 +9015,8 @@ cass_iterator_columns_from_table_meta(const CassTableMeta* table_meta);
* Creates a new iterator for the specified table metadata.
* This can be used to iterate over indexes.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassTableMeta
*
* @param[in] table_meta
@@ -9774,24 +9043,6 @@ cass_iterator_indexes_from_table_meta(const CassTableMeta* table_meta);
CASS_EXPORT CassIterator*
cass_iterator_materialized_views_from_table_meta(const CassTableMeta* table_meta);
-/**
- * Creates a new fields iterator for the specified table metadata. Metadata
- * fields allow direct access to the column data found in the underlying
- * "tables" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassTableMeta
- *
- * @param[in] table_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field_name()
- * @see cass_iterator_get_meta_field_value()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_table_meta(const CassTableMeta* table_meta);
-
/**
* Creates a new iterator for the specified materialized view metadata.
* This can be used to iterate over columns.
@@ -9807,94 +9058,6 @@ cass_iterator_fields_from_table_meta(const CassTableMeta* table_meta);
CASS_EXPORT CassIterator*
cass_iterator_columns_from_materialized_view_meta(const CassMaterializedViewMeta* view_meta);
-/**
- * Creates a new fields iterator for the specified materialized view metadata.
- * Metadata fields allow direct access to the column data found in the
- * underlying "views" metadata view. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassMaterializedViewMeta
- *
- * @param[in] view_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field_name()
- * @see cass_iterator_get_meta_field_value()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_materialized_view_meta(const CassMaterializedViewMeta* view_meta);
-
-/**
- * Creates a new fields iterator for the specified column metadata. Metadata
- * fields allow direct access to the column data found in the underlying
- * "columns" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassColumnMeta
- *
- * @param[in] column_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field_name()
- * @see cass_iterator_get_meta_field_value()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_column_meta(const CassColumnMeta* column_meta);
-
-/**
- * Creates a new fields iterator for the specified index metadata. Metadata
- * fields allow direct access to the index data found in the underlying
- * "indexes" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassIndexMeta
- *
- * @param[in] index_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field_name()
- * @see cass_iterator_get_meta_field_value()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_index_meta(const CassIndexMeta* index_meta);
-
-/**
- * Creates a new fields iterator for the specified function metadata. Metadata
- * fields allow direct access to the column data found in the underlying
- * "functions" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassFunctionMeta
- *
- * @param[in] function_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_function_meta(const CassFunctionMeta* function_meta);
-
-/**
- * Creates a new fields iterator for the specified aggregate metadata. Metadata
- * fields allow direct access to the column data found in the underlying
- * "aggregates" metadata table. This can be used to iterate those metadata
- * field entries.
- *
- * @public @memberof CassAggregateMeta
- *
- * @param[in] aggregate_meta
- * @return A new iterator that must be freed.
- *
- * @see cass_iterator_get_meta_field()
- * @see cass_iterator_free()
- */
-CASS_EXPORT CassIterator*
-cass_iterator_fields_from_aggregate_meta(const CassAggregateMeta* aggregate_meta);
-
/**
* Advance the iterator to the next row, column or collection item.
*
@@ -10071,6 +9234,8 @@ cass_iterator_get_user_type(const CassIterator* iterator);
* Calling cass_iterator_next() will invalidate the previous
* value returned by this method.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIterator
*
* @param[in] iterator
@@ -10085,6 +9250,8 @@ cass_iterator_get_function_meta(const CassIterator* iterator);
* Calling cass_iterator_next() will invalidate the previous
* value returned by this method.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIterator
*
* @param[in] iterator
@@ -10113,6 +9280,8 @@ cass_iterator_get_column_meta(const CassIterator* iterator);
* Calling cass_iterator_next() will invalidate the previous
* value returned by this method.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassIterator
*
* @param[in] iterator
@@ -10121,38 +9290,6 @@ cass_iterator_get_column_meta(const CassIterator* iterator);
CASS_EXPORT const CassIndexMeta*
cass_iterator_get_index_meta(const CassIterator* iterator);
-/**
- * Gets the metadata field name at the iterator's current position.
- *
- * Calling cass_iterator_next() will invalidate the previous
- * value returned by this method.
- *
- * @public @memberof CassIterator
- *
- * @param[in] iterator
- * @param[out] name
- * @param[out] name_length
- * @return CASS_OK if successful, otherwise error occurred
- */
-CASS_EXPORT CassError
-cass_iterator_get_meta_field_name(const CassIterator* iterator,
- const char** name,
- size_t* name_length);
-
-/**
- * Gets the metadata field value at the iterator's current position.
- *
- * Calling cass_iterator_next() will invalidate the previous
- * value returned by this method.
- *
- * @public @memberof CassIterator
- *
- * @param[in] iterator
- * @return A metadata field value
- */
-CASS_EXPORT const CassValue*
-cass_iterator_get_meta_field_value(const CassIterator* iterator);
-
/***********************************************************************************
*
* Row
@@ -10884,6 +10021,8 @@ cass_retry_policy_free(CassRetryPolicy* policy);
/**
* Creates a new custom payload.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @return Returns a custom payload that must be freed.
@@ -10896,6 +10035,8 @@ cass_custom_payload_new();
/**
* Frees a custom payload instance.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @param[in] payload
@@ -10906,6 +10047,8 @@ cass_custom_payload_free(CassCustomPayload* payload);
/**
* Sets an item to the custom payload.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @param[in] payload
@@ -10923,6 +10066,8 @@ cass_custom_payload_set(CassCustomPayload* payload,
* Same as cass_custom_payload_set(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @param[in] payload
@@ -10941,6 +10086,8 @@ cass_custom_payload_set_n(CassCustomPayload* payload,
/**
* Removes an item from the custom payload.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @param[in] payload
@@ -10954,6 +10101,8 @@ cass_custom_payload_remove(CassCustomPayload* payload,
* Same as cass_custom_payload_set(), but with lengths for string
* parameters.
*
+ * Warning: This function is not yet implemented.
+ *
* @public @memberof CassCustomPayload
*
* @param[in] payload
@@ -11018,17 +10167,6 @@ cass_error_desc(CassError error);
*
***********************************************************************************/
-/**
- * Explicitly wait for the log to flush and deallocate resources.
- * This *MUST* be the last call using the library. It is an error
- * to call any cass_*() functions after this call.
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- */
-CASS_EXPORT CASS_DEPRECATED(void
-cass_log_cleanup());
-
/**
* Sets the log level.
*
@@ -11067,22 +10205,6 @@ cass_log_set_callback(CassLogCallback callback,
CASS_EXPORT void
cass_log_get_callback_and_data(CassLogCallback* callback_out, void** data_out);
-/**
- * Sets the log queue size.
- *
- * Note: This needs to be done before any call that might log, such as
- * any of the cass_cluster_*() or cass_ssl_*() functions.
- *
- * Default: 2048
- *
- * @deprecated This is no longer useful and does nothing. Expect this to be
- * removed in a future release.
- *
- * @param[in] queue_size
- */
-CASS_EXPORT CASS_DEPRECATED(void
-cass_log_set_queue_size(size_t queue_size));
-
/**
* Gets the string for a log level.
*
@@ -11213,6 +10335,8 @@ cass_date_time_to_epoch(cass_uint32_t date,
/**
* Set custom allocation functions.
*
+ * Warning: This function is not yet implemented.
+ *
* Note: This is not thread-safe. The allocation functions must be set
* before any other library function is called.
*
diff --git a/include/deleted_functions.h b/include/deleted_functions.h
new file mode 100644
index 00000000..b3baea1a
--- /dev/null
+++ b/include/deleted_functions.h
@@ -0,0 +1,1081 @@
+/*
+ * This file contains declarations of functions that have been deleted
+ * from the public API (`cassandra.h`) upon transition to the new C/C++ driver
+ * implementation as a wrapper over the Rust Driver.
+ *
+ * Each function or function group is marked with a comment indicating
+ * the reason for its deletion.
+ *
+ */
+
+#ifndef __DELETED_H_INCLUDED__
+#define __DELETED_H_INCLUDED__
+
+#include "cassandra.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Custom type - deleted due to no planned support for this legacy feature
+ * in the Rust Driver. */
+
+ /**
+ * Appends a "custom" to the collection.
+ *
+ * @public @memberof CassCollection
+ *
+ * @param[in] collection
+ * @param[in] class_name
+ * @param[in] value The value is copied into the collection object; the
+ * memory pointed to by this parameter can be freed after this call.
+ * @param[in] value_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+ CASS_EXPORT CassError
+ cass_collection_append_custom(CassCollection* collection,
+ const char* class_name,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Same as cass_collection_append_custom(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassCollection
+ *
+ * @param[in] collection
+ * @param[in] class_name
+ * @param[in] class_name_length
+ * @param[in] value
+ * @param[in] value_size
+ * @return same as cass_collection_append_custom()
+ *
+ * @see cass_collection_append_custom()
+ */
+CASS_EXPORT CassError
+cass_collection_append_custom_n(CassCollection* collection,
+ const char* class_name,
+ size_t class_name_length,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Binds a "custom" to a query or bound statement at the specified index.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
+ * @param[in] index
+ * @param[in] class_name
+ * @param[in] value The value is copied into the statement object; the
+ * memory pointed to by this parameter can be freed after this call.
+ * @param[in] value_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_statement_bind_custom(CassStatement* statement,
+ size_t index,
+ const char* class_name,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Same as cass_statement_bind_custom(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
+ * @param[in] index
+ * @param[in] class_name
+ * @param[in] class_name_length
+ * @param[in] value The value is copied into the statement object; the
+ * memory pointed to by this parameter can be freed after this call.
+ * @param[in] value_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_statement_bind_custom_n(CassStatement* statement,
+ size_t index,
+ const char* class_name,
+ size_t class_name_length,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Binds a "custom" to all the values with the specified name.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
+ * @param[in] name
+ * @param[in] class_name
+ * @param[in] value The value is copied into the statement object; the
+ * memory pointed to by this parameter can be freed after this call.
+ * @param[in] value_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_statement_bind_custom_by_name(CassStatement* statement,
+ const char* name,
+ const char* class_name,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Same as cass_statement_bind_custom_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
+ * @param[in] name
+ * @param[in] name_length
+ * @param[in] class_name
+ * @param[in] class_name_length
+ * @param[in] value
+ * @param[in] value_size
+ * @return same as cass_statement_bind_custom_by_name()
+ *
+ * @see cass_statement_bind_custom_by_name()
+ */
+CASS_EXPORT CassError
+cass_statement_bind_custom_by_name_n(CassStatement* statement,
+ const char* name,
+ size_t name_length,
+ const char* class_name,
+ size_t class_name_length,
+ const cass_byte_t* value,
+ size_t value_size);
+/**
+ * Sets a "custom" in a tuple at the specified index.
+ *
+ * @public @memberof CassTuple
+ *
+ * @param[in] tuple
+ * @param[in] index
+ * @param[in] class_name
+ * @param[in] value The value is copied into the tuple object; the
+ * memory pointed to by this parameter can be freed after this call.
+ * @param[in] value_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_tuple_set_custom(CassTuple* tuple,
+ size_t index,
+ const char* class_name,
+ const cass_byte_t* value,
+ size_t value_size);
+
+/**
+ * Same as cass_tuple_set_custom(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassTuple
+ *
+ * @param[in] tuple
+ * @param[in] index
+ * @param[in] class_name
+ * @param[in] class_name_length
+ * @param[in] value
+ * @param[in] value_size
+ * @return same as cass_tuple_set_custom()
+ *
+ * @see cass_tuple_set_custom()
+ */
+CASS_EXPORT CassError
+cass_tuple_set_custom_n(CassTuple* tuple,
+ size_t index,
+ const char* class_name,
+ size_t class_name_length,
+ const cass_byte_t* value,
+ size_t value_size);
+
+
+/* DataStax Enterprise-specific features
+ * The driver does not support DataStax Enterprise. */
+
+/**
+ * Sets the secure connection bundle path for processing DBaaS credentials.
+ *
+ * This will pre-configure a cluster using the credentials format provided by
+ * the DBaaS cloud provider.
+ *
+ * @param[in] cluster
+ * @param[in] path Absolute path to DBaaS credentials file.
+ * @return CASS_OK if successful, otherwise error occured.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_cloud_secure_connection_bundle(CassCluster* cluster,
+ const char* path);
+
+/**
+ * Same as cass_cluster_set_cloud_secure_connection_bundle(), but with lengths
+ * for string parameters.
+ *
+ * @see cass_cluster_set_cloud_secure_connection_bundle()
+ *
+ * @param[in] cluster
+ * @param[in] path Absolute path to DBaaS credentials file.
+ * @param[in] path_length Length of path variable.
+ * @return CASS_OK if successful, otherwise error occured.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_cloud_secure_connection_bundle_n(CassCluster* cluster,
+ const char* path,
+ size_t path_length);
+
+/**
+ * Same as cass_cluster_set_cloud_secure_connection_bundle(), but it does not
+ * initialize the underlying SSL library implementation. The SSL library still
+ * needs to be initialized, but it's up to the client application to handle
+ * initialization. This is similar to the function cass_ssl_new_no_lib_init(),
+ * and its documentation should be used as a reference to properly initialize
+ * the underlying SSL library.
+ *
+ * @see cass_ssl_new_no_lib_init()
+ * @see cass_cluster_set_cloud_secure_connection_bundle()
+ *
+ * @param[in] cluster
+ * @param[in] path Absolute path to DBaaS credentials file.
+ * @return CASS_OK if successful, otherwise error occured.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(CassCluster* cluster,
+ const char* path);
+
+/**
+ * Same as cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(),
+ * but with lengths for string parameters.
+ *
+ * @see cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init()
+ *
+ * @param[in] cluster
+ * @param[in] path Absolute path to DBaaS credentials file.
+ * @param[in] path_length Length of path variable.
+ * @return CASS_OK if successful, otherwise error occured.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init_n(CassCluster* cluster,
+ const char* path,
+ size_t path_length);
+
+/**
+ * Sets the amount of time between monitor reporting event messages.
+ *
+ * Default: 300 seconds.
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] interval_secs Use 0 to disable monitor reporting event messages.
+ */
+CASS_EXPORT void
+cass_cluster_set_monitor_reporting_interval(CassCluster* cluster,
+ unsigned interval_secs);
+
+
+/* Ancient features, which have no use nowadays. */
+
+/**
+ * Enable the NO_COMPACT startup option.
+ *
+ * This can help facilitate uninterrupted cluster upgrades where tables using
+ * COMPACT_STORAGE will operate in "compatibility mode" for
+ * BATCH, DELETE, SELECT, and UPDATE CQL operations.
+ *
+ * Default: cass_false
+ *
+ * @cassandra{3.0.16+}
+ * @cassandra{3.11.2+}
+ * @cassandra{4.0+}
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] enabled
+ */
+CASS_EXPORT CassError
+cass_cluster_set_no_compact(CassCluster* cluster,
+ cass_bool_t enabled);
+
+/**
+ * Enable/Disable retrieving hostnames for IP addresses using reverse IP lookup.
+ *
+ * This is useful for authentication (Kerberos) or encryption (SSL) services
+ * that require a valid hostname for verification.
+ *
+ * Default: cass_false (disabled).
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] enabled
+ * @return CASS_OK if successful, otherwise an error occurred
+ *
+ * @see cass_cluster_set_resolve_timeout()
+ */
+CASS_EXPORT CassError
+cass_cluster_set_use_hostname_resolution(CassCluster* cluster,
+ cass_bool_t enabled);
+
+
+/* Functions deprecated by the CPP Driver, which would do nothing even there. */
+
+/**
+ * Sets the size of the fixed size queue that stores
+ * events.
+ *
+ * Default: 8192
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] queue_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_queue_size_event(CassCluster* cluster,
+ unsigned queue_size));
+
+/**
+ * Sets the maximum number of connections made to each server in each
+ * IO thread.
+ *
+ * Default: 2
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_connections
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_max_connections_per_host(CassCluster* cluster,
+ unsigned num_connections));
+
+/**
+ * Sets the maximum number of connections that will be created concurrently.
+ * Connections are created when the current connections are unable to keep up with
+ * request throughput.
+ *
+ * Default: 1
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_connections
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_max_concurrent_creation(CassCluster* cluster,
+ unsigned num_connections));
+
+/**
+ * Sets the threshold for the maximum number of concurrent requests in-flight
+ * on a connection before creating a new connection. The number of new connections
+ * created will not exceed max_connections_per_host.
+ *
+ * Default: 100
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_requests
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_max_concurrent_requests_threshold(CassCluster* cluster,
+ unsigned num_requests));
+
+/**
+ * Sets the maximum number of requests processed by an IO worker
+ * per flush.
+ *
+ * Default: 128
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_requests
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_max_requests_per_flush(CassCluster* cluster,
+ unsigned num_requests));
+
+/**
+ * Sets the high water mark for the number of bytes outstanding
+ * on a connection. Disables writes to a connection if the number
+ * of bytes queued exceed this value.
+ *
+ * Default: 64 KB
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_bytes
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_write_bytes_high_water_mark(CassCluster* cluster,
+ unsigned num_bytes));
+
+/**
+ * Sets the low water mark for number of bytes outstanding on a
+ * connection. After exceeding high water mark bytes, writes will
+ * only resume once the number of bytes fall below this value.
+ *
+ * Default: 32 KB
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_bytes
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_write_bytes_low_water_mark(CassCluster* cluster,
+ unsigned num_bytes));
+
+/**
+ * Sets the high water mark for the number of requests queued waiting
+ * for a connection in a connection pool. Disables writes to a
+ * host on an IO worker if the number of requests queued exceed this
+ * value.
+ *
+ * Default: 256
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_requests
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_pending_requests_high_water_mark(CassCluster* cluster,
+ unsigned num_requests));
+
+/**
+ * Sets the low water mark for the number of requests queued waiting
+ * for a connection in a connection pool. After exceeding high water mark
+ * requests, writes to a host will only resume once the number of requests
+ * fall below this value.
+ *
+ * Default: 128
+ *
+ * @public @memberof CassCluster
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] cluster
+ * @param[in] num_requests
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CASS_DEPRECATED(CassError
+cass_cluster_set_pending_requests_low_water_mark(CassCluster* cluster,
+ unsigned num_requests));
+
+/**
+ * Explicitly wait for the log to flush and deallocate resources.
+ * This *MUST* be the last call using the library. It is an error
+ * to call any cass_*() functions after this call.
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ */
+CASS_EXPORT CASS_DEPRECATED(void
+cass_log_cleanup());
+
+/**
+ * Sets the log queue size.
+ *
+ * Note: This needs to be done before any call that might log, such as
+ * any of the cass_cluster_*() or cass_ssl_*() functions.
+ *
+ * Default: 2048
+ *
+ * @deprecated This is no longer useful and does nothing. Expect this to be
+ * removed in a future release.
+ *
+ * @param[in] queue_size
+ */
+CASS_EXPORT CASS_DEPRECATED(void
+cass_log_set_queue_size(size_t queue_size));
+
+
+/* Functions incompatible with Rust Driver's architecture */
+
+/**
+ * Sets the ratio of time spent processing new requests versus handling the I/O
+ * and processing of outstanding requests. The range of this setting is 1 to 100,
+ * where larger values allocate more time to processing new requests and smaller
+ * values allocate more time to processing outstanding requests.
+ *
+ * Default: 50
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] ratio
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_new_request_ratio(CassCluster* cluster,
+ cass_int32_t ratio);
+
+/**
+ * Sets the maximum number of "pending write" objects that will be
+ * saved for re-use for marshalling new requests. These objects may
+ * hold on to a significant amount of memory and reducing the
+ * number of these objects may reduce memory usage of the application.
+ *
+ * The cost of reducing the value of this setting is potentially slower
+ * marshalling of requests prior to sending.
+ *
+ * Default: Max unsigned integer value
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] num_objects
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_max_reusable_write_objects(CassCluster* cluster,
+ unsigned num_objects);
+
+/**
+ * Sets the size of the fixed size queue that stores
+ * pending requests.
+ *
+ * Default: 8192
+ *
+ * @public @memberof CassCluster
+ *
+ * @param[in] cluster
+ * @param[in] queue_size
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_cluster_set_queue_size_io(CassCluster* cluster,
+ unsigned queue_size);
+
+
+/* Metadata tables' raw values accessors
+ * Rust Driver does not store nor expose raw values of the system tables. */
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "aggregates" metadata table.
+ *
+ * @public @memberof CassAggregateMeta
+ *
+ * @param[in] aggregate_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_aggregate_meta_field_by_name(const CassAggregateMeta* aggregate_meta,
+ const char* name);
+
+/**
+ * Same as cass_aggregate_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassAggregateMeta
+ *
+ * @param[in] aggregate_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_aggregate_meta_field_by_name()
+ *
+ * @see cass_aggregate_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_aggregate_meta_field_by_name_n(const CassAggregateMeta* aggregate_meta,
+ const char* name,
+ size_t name_length);
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "functions" metadata table.
+ *
+ * @public @memberof CassFunctionMeta
+ *
+ * @param[in] function_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_function_meta_field_by_name(const CassFunctionMeta* function_meta,
+ const char* name);
+
+/**
+ * Same as cass_function_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassFunctionMeta
+ *
+ * @param[in] function_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_function_meta_field_by_name()
+ *
+ * @see cass_function_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_function_meta_field_by_name_n(const CassFunctionMeta* function_meta,
+ const char* name,
+ size_t name_length);
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "keyspaces" metadata table.
+ *
+ * @public @memberof CassKeyspaceMeta
+ *
+ * @param[in] keyspace_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_keyspace_meta_field_by_name(const CassKeyspaceMeta* keyspace_meta,
+ const char* name);
+
+/**
+ * Same as cass_keyspace_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassKeyspaceMeta
+ *
+ * @param[in] keyspace_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_keyspace_meta_field_by_name()
+ *
+ * @see cass_keyspace_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_keyspace_meta_field_by_name_n(const CassKeyspaceMeta* keyspace_meta,
+ const char* name,
+ size_t name_length);
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "tables" metadata table.
+ *
+ * @public @memberof CassTableMeta
+ *
+ * @param[in] table_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_table_meta_field_by_name(const CassTableMeta* table_meta,
+ const char* name);
+
+/**
+ * Same as cass_table_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassTableMeta
+ *
+ * @param[in] table_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_table_meta_field_by_name()
+ *
+ * @see cass_table_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_table_meta_field_by_name_n(const CassTableMeta* table_meta,
+ const char* name,
+ size_t name_length);
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "views" metadata view.
+ *
+ * @public @memberof CassMaterializedViewMeta
+ *
+ * @param[in] view_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_materialized_view_meta_field_by_name(const CassMaterializedViewMeta* view_meta,
+ const char* name);
+
+/**
+ * Same as cass_materialized_view_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassMaterializedViewMeta
+ *
+ * @param[in] view_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_materialized_view_meta_field_by_name()
+ *
+ * @see cass_materialized_view_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_materialized_view_meta_field_by_name_n(const CassMaterializedViewMeta* view_meta,
+ const char* name,
+ size_t name_length);
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the column data found in the underlying "columns" metadata table.
+ *
+ * @public @memberof CassColumnMeta
+ *
+ * @param[in] column_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_column_meta_field_by_name(const CassColumnMeta* column_meta,
+ const char* name);
+
+/**
+ * Same as cass_column_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassColumnMeta
+ *
+ * @param[in] column_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_column_meta_field_by_name()
+ *
+ * @see cass_column_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_column_meta_field_by_name_n(const CassColumnMeta* column_meta,
+ const char* name,
+ size_t name_length);
+
+
+/**
+ * Gets a metadata field for the provided name. Metadata fields allow direct
+ * access to the index data found in the underlying "indexes" metadata table.
+ *
+ * @public @memberof CassIndexMeta
+ *
+ * @param[in] index_meta
+ * @param[in] name
+ * @return A metadata field value. NULL if the field does not exist.
+ */
+CASS_EXPORT const CassValue*
+cass_index_meta_field_by_name(const CassIndexMeta* index_meta,
+ const char* name);
+
+/**
+ * Same as cass_index_meta_field_by_name(), but with lengths for string
+ * parameters.
+ *
+ * @public @memberof CassIndexMeta
+ *
+ * @param[in] index_meta
+ * @param[in] name
+ * @param[in] name_length
+ * @return same as cass_index_meta_field_by_name()
+ *
+ * @see cass_index_meta_field_by_name()
+ */
+CASS_EXPORT const CassValue*
+cass_index_meta_field_by_name_n(const CassIndexMeta* index_meta,
+ const char* name,
+ size_t name_length);
+
+/**
+ * Creates a new fields iterator for the specified keyspace metadata. Metadata
+ * fields allow direct access to the column data found in the underlying
+ * "keyspaces" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassKeyspaceMeta
+ *
+ * @param[in] keyspace_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field_name()
+ * @see cass_iterator_get_meta_field_value()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_keyspace_meta(const CassKeyspaceMeta* keyspace_meta);
+
+
+/**
+ * Creates a new fields iterator for the specified table metadata. Metadata
+ * fields allow direct access to the column data found in the underlying
+ * "tables" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassTableMeta
+ *
+ * @param[in] table_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field_name()
+ * @see cass_iterator_get_meta_field_value()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_table_meta(const CassTableMeta* table_meta);
+
+/**
+ * Creates a new fields iterator for the specified materialized view metadata.
+ * Metadata fields allow direct access to the column data found in the
+ * underlying "views" metadata view. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassMaterializedViewMeta
+ *
+ * @param[in] view_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field_name()
+ * @see cass_iterator_get_meta_field_value()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_materialized_view_meta(const CassMaterializedViewMeta* view_meta);
+
+/**
+ * Creates a new fields iterator for the specified column metadata. Metadata
+ * fields allow direct access to the column data found in the underlying
+ * "columns" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassColumnMeta
+ *
+ * @param[in] column_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field_name()
+ * @see cass_iterator_get_meta_field_value()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_column_meta(const CassColumnMeta* column_meta);
+
+/**
+ * Creates a new fields iterator for the specified index metadata. Metadata
+ * fields allow direct access to the index data found in the underlying
+ * "indexes" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassIndexMeta
+ *
+ * @param[in] index_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field_name()
+ * @see cass_iterator_get_meta_field_value()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_index_meta(const CassIndexMeta* index_meta);
+
+/**
+ * Creates a new fields iterator for the specified function metadata. Metadata
+ * fields allow direct access to the column data found in the underlying
+ * "functions" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassFunctionMeta
+ *
+ * @param[in] function_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_function_meta(const CassFunctionMeta* function_meta);
+
+/**
+ * Creates a new fields iterator for the specified aggregate metadata. Metadata
+ * fields allow direct access to the column data found in the underlying
+ * "aggregates" metadata table. This can be used to iterate those metadata
+ * field entries.
+ *
+ * @public @memberof CassAggregateMeta
+ *
+ * @param[in] aggregate_meta
+ * @return A new iterator that must be freed.
+ *
+ * @see cass_iterator_get_meta_field()
+ * @see cass_iterator_free()
+ */
+CASS_EXPORT CassIterator*
+cass_iterator_fields_from_aggregate_meta(const CassAggregateMeta* aggregate_meta);
+
+/**
+ * Gets the metadata field name at the iterator's current position.
+ *
+ * Calling cass_iterator_next() will invalidate the previous
+ * value returned by this method.
+ *
+ * @public @memberof CassIterator
+ *
+ * @param[in] iterator
+ * @param[out] name
+ * @param[out] name_length
+ * @return CASS_OK if successful, otherwise error occurred
+ */
+CASS_EXPORT CassError
+cass_iterator_get_meta_field_name(const CassIterator* iterator,
+ const char** name,
+ size_t* name_length);
+
+/**
+ * Gets the metadata field value at the iterator's current position.
+ *
+ * Calling cass_iterator_next() will invalidate the previous
+ * value returned by this method.
+ *
+ * @public @memberof CassIterator
+ *
+ * @param[in] iterator
+ * @return A metadata field value
+ */
+CASS_EXPORT const CassValue*
+cass_iterator_get_meta_field_value(const CassIterator* iterator);
+
+
+/* Functions unimplemented on purpose */
+
+// Binding values to unprepared statements is risky and hence
+// unsupported by the Rust Driver.
+/**
+ * Adds a key index specifier to this a statement.
+ * When using token-aware routing, this can be used to tell the driver which
+ * parameters within a non-prepared, parameterized statement are part of
+ * the partition key.
+ *
+ * Use consecutive calls for composite partition keys.
+ *
+ * This is not necessary for prepared statements, as the key
+ * parameters are determined in the metadata processed in the prepare phase.
+ *
+ * @public @memberof CassStatement
+ *
+ * @param[in] statement
+ * @param[in] index
+ * @return CASS_OK if successful, otherwise an error occurred.
+ */
+CASS_EXPORT CassError
+cass_statement_add_key_index(CassStatement* statement,
+ size_t index);
+
+/**
+ * Enable pre-preparing cached prepared statements when existing hosts become
+ * available again or when new hosts are added to the cluster.
+ *
+ * This can help mitigate request latency when executing prepared statements
+ * by avoiding an extra round trip in cases where the statement is
+ * unprepared on a freshly started server. The main tradeoff is extra background
+ * network traffic is required to prepare the statements on hosts as they become
+ * available.
+ *
+ * Default: cass_true
+ *
+ * @param cluster
+ * @param enabled
+ * @return CASS_OK if successful, otherwise an error occurred
+ */
+CASS_EXPORT CassError
+cass_cluster_set_prepare_on_up_or_add_host(CassCluster* cluster,
+ cass_bool_t enabled);
+
+
+/* Request tracing API
+ * 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.
+ */
+
+ /**
+ * Sets the maximum time to wait for tracing data to become available.
+ *
+ * Default: 15 milliseconds
+ *
+ * @param[in] cluster
+ * @param[in] max_wait_time_ms
+ */
+ CASS_EXPORT void
+ cass_cluster_set_tracing_max_wait_time(CassCluster* cluster,
+ unsigned max_wait_time_ms);
+
+ /**
+ * Sets the amount of time to wait between attempts to check to see if tracing is
+ * available.
+ *
+ * Default: 3 milliseconds
+ *
+ * @param[in] cluster
+ * @param[in] retry_wait_time_ms
+ */
+ CASS_EXPORT void
+ cass_cluster_set_tracing_retry_wait_time(CassCluster* cluster,
+ unsigned retry_wait_time_ms);
+
+ /**
+ * Sets the consistency level to use for checking to see if tracing data is
+ * available.
+ *
+ * Default: CASS_CONSISTENCY_ONE
+ *
+ * @param[in] cluster
+ * @param[in] consistency
+ */
+ CASS_EXPORT void
+ cass_cluster_set_tracing_consistency(CassCluster* cluster,
+ CassConsistency consistency);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __DELETED_H_INCLUDED__ */
diff --git a/scylla-rust-wrapper/src/api.rs b/scylla-rust-wrapper/src/api.rs
index 5a21166b..1435d269 100644
--- a/scylla-rust-wrapper/src/api.rs
+++ b/scylla-rust-wrapper/src/api.rs
@@ -916,12 +916,10 @@ pub mod log {
#[rustfmt::skip]
pub use crate::logging::{
CassLogCallback,
- cass_log_cleanup,
cass_log_get_callback_and_data,
cass_log_level_string,
cass_log_set_callback,
cass_log_set_level,
- cass_log_set_queue_size,
};
}
diff --git a/scylla-rust-wrapper/src/logging.rs b/scylla-rust-wrapper/src/logging.rs
index 30a51a43..06d970e9 100644
--- a/scylla-rust-wrapper/src/logging.rs
+++ b/scylla-rust-wrapper/src/logging.rs
@@ -3,7 +3,6 @@ use crate::argconv::{
CConst, CassBorrowedSharedPtr, FFI, FromRef, RefFFI, arr_to_cstr, ptr_to_cstr, str_to_arr,
};
use crate::cass_log_types::{CassLogLevel, CassLogMessage};
-use crate::types::size_t;
use std::convert::TryFrom;
use std::fmt::Debug;
use std::fmt::Write;
@@ -216,13 +215,3 @@ pub unsafe extern "C" fn cass_log_get_callback_and_data(
*data_out = logger.data;
}
}
-
-#[unsafe(no_mangle)]
-pub unsafe extern "C" fn cass_log_cleanup() {
- // Deprecated
-}
-
-#[unsafe(no_mangle)]
-pub unsafe extern "C" fn cass_log_set_queue_size(_queue_size: size_t) {
- // Deprecated
-}
diff --git a/src/testing.hpp b/src/testing.hpp
index 7ca0e473..09b49b21 100644
--- a/src/testing.hpp
+++ b/src/testing.hpp
@@ -18,6 +18,7 @@
#define DATASTAX_INTERNAL_TESTING_HPP
#include "cassandra.h"
+#include "deleted_functions.h"
#include "string.hpp"
#include "string_ref.hpp"
#include "vector.hpp"
diff --git a/src/testing_unimplemented.cpp b/src/testing_unimplemented.cpp
index b1b417bc..bb2aa8af 100644
--- a/src/testing_unimplemented.cpp
+++ b/src/testing_unimplemented.cpp
@@ -1,6 +1,8 @@
#include "cassandra.h"
#include
+extern "C" {
+
CASS_EXPORT size_t cass_aggregate_meta_argument_count(const CassAggregateMeta* aggregate_meta) {
throw std::runtime_error("UNIMPLEMENTED cass_aggregate_meta_argument_count\n");
}
@@ -219,3 +221,5 @@ CASS_EXPORT CassError cass_user_type_set_custom_by_name(CassUserType* user_type,
size_t value_size) {
throw std::runtime_error("UNIMPLEMENTED cass_user_type_set_custom_by_name\n");
}
+
+} // extern "C"
diff --git a/tests/src/integration/integration.hpp b/tests/src/integration/integration.hpp
index 2129c7cd..b7b74c1f 100644
--- a/tests/src/integration/integration.hpp
+++ b/tests/src/integration/integration.hpp
@@ -24,6 +24,7 @@
#include
#include "cassandra.h"
+#include "deleted_functions.h"
#include "bridge.hpp"
#include "logger.hpp"
diff --git a/tests/src/integration/objects/cluster.hpp b/tests/src/integration/objects/cluster.hpp
index b0f009fd..ff51ce9b 100644
--- a/tests/src/integration/objects/cluster.hpp
+++ b/tests/src/integration/objects/cluster.hpp
@@ -17,6 +17,7 @@
#ifndef __TEST_CLUSTER_HPP__
#define __TEST_CLUSTER_HPP__
#include "cassandra.h"
+#include "deleted_functions.h"
#include "object_base.hpp"
diff --git a/tests/src/integration/tests/test_dbaas.cpp b/tests/src/integration/tests/test_dbaas.cpp
deleted file mode 100644
index 4d532798..00000000
--- a/tests/src/integration/tests/test_dbaas.cpp
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
- Copyright (c) DataStax, Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-#include "integration.hpp"
-
-#include "process.hpp"
-
-#define PROXY_CREDS_V1_INVALID_CA_FILENAME "creds-v1-invalid-ca.zip"
-#define PROXY_CREDS_V1_UNREACHABLE_FILENAME "creds-v1-unreachable.zip"
-#define PROXY_CREDS_V1_NO_CERT_FILENAME "creds-v1-wo-cert.zip"
-#define PROXY_CREDS_V1_NO_CREDS_FILENAME "creds-v1-wo-creds.zip"
-#define PROXY_CREDS_V1_FILENAME "creds-v1.zip"
-
-#ifdef WIN32
-#define PROXY_RUN_SCRIPT "run.ps1"
-#define PROXY_CREDS_BUNDLES "certs\\bundles\\"
-#else
-#define PROXY_RUN_SCRIPT "run.sh"
-#define PROXY_CREDS_BUNDLES "certs/bundles/"
-#endif
-
-using test::Utils;
-using utils::Process;
-
-/**
- * Database as a service integration tests
- */
-class DbaasTests : public Integration {
-public:
- typedef std::map ServerNames;
- typedef std::pair ServerPair;
-
- static void SetUpTestCase() {
- char* proxy_path = getenv("PROXY_PATH");
- if (proxy_path) {
- proxy_path_ = proxy_path;
- } else {
- proxy_path_ = Utils::home_directory() + Utils::PATH_SEPARATOR + "proxy";
- }
- proxy_path_ += Utils::PATH_SEPARATOR;
- proxy_run_script_ = proxy_path_ + PROXY_RUN_SCRIPT;
-
- // Allow the proxy to start itself or use a currently running proxy
- if (file_exists(proxy_run_script_)) {
- if (!start_proxy()) {
- FAIL() << "Unable to start SNI single endpoint proxy service. Check PROXY_PATH environment "
- "variable"
-#ifdef WIN32
- << " or ensure proper ExecutionPolicy is set (e.g. Set-ExecutionPolicy -Scope "
- "CurrentUser Unrestricted); see "
- "https:/go.microsoft.com/fwlink/?LinkID=135170"
-#endif
- << ".";
- }
- } else {
- if (!is_proxy_running()) {
- FAIL()
- << "SNI single endpoint proxy is not available. Start container before executing test.";
- }
- }
-
- if (!file_exists(proxy_cred_bundles_path_)) {
- proxy_cred_bundles_path_ = proxy_path_ + proxy_cred_bundles_path_;
- }
- if (!file_exists(creds_v1_invalid_ca()) || !file_exists(creds_v1_unreachable()) ||
- !file_exists(creds_v1_no_cert()) || !file_exists(creds_v1_no_creds()) ||
- !file_exists(creds_v1())) {
- FAIL() << "Unable to locate SNI single endpoint credential bundles. Check PROXY_PATH "
- "environment variable.";
- }
- }
-
- void SetUp() {
- // Ensure CCM and session are not created for these tests
- is_ccm_requested_ = false;
- is_session_requested_ = false;
- is_schema_metadata_ = true; // Needed for prepared statements
- Integration::SetUp();
- }
-
- static void TearDownTestCase() {
- if (!Options::keep_clusters()) {
- stop_proxy();
- }
- }
-
- static std::string creds_v1_invalid_ca() {
- return proxy_cred_bundles_path_ + PROXY_CREDS_V1_INVALID_CA_FILENAME;
- }
-
- static std::string creds_v1_unreachable() {
- return proxy_cred_bundles_path_ + PROXY_CREDS_V1_UNREACHABLE_FILENAME;
- }
-
- static std::string creds_v1_no_cert() {
- return proxy_cred_bundles_path_ + PROXY_CREDS_V1_NO_CERT_FILENAME;
- }
-
- static std::string creds_v1_no_creds() {
- return proxy_cred_bundles_path_ + PROXY_CREDS_V1_NO_CREDS_FILENAME;
- }
-
- static std::string creds_v1() { return proxy_cred_bundles_path_ + PROXY_CREDS_V1_FILENAME; }
-
- int get_node_id(const std::string& rpc_address) {
- std::vector octects = explode(rpc_address, '.');
- std::stringstream ss(octects[octects.size() - 1]);
- int node = 0;
- if ((ss >> node).fail()) {
- EXPECT_TRUE(false) << "Unable to parse node number from rpc_address";
- }
- return node;
- }
-
- /**
- * Vector of server names sorted by node number (e.g. last octet in real IP address)
- */
- ServerNames get_server_names() {
- ServerNames map;
- {
- Cluster cluster = default_cluster(false)
- .with_randomized_contact_points(false)
- .with_load_balance_round_robin();
- EXPECT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- Session session = cluster.connect();
- for (int i = 0; i < 3; ++i) {
- Row row = session.execute(SELECT_ALL_SYSTEM_LOCAL_CQL).first_row();
- int node = get_node_id(row.column_by_name("rpc_address").str());
- map.insert(ServerPair(node, row.column_by_name("host_id").str()));
- }
- }
- return map;
- }
-
- bool start_cluster() {
- Process::Args args;
- args.push_back("start");
- args.push_back("--root");
- args.push_back("--wait-for-binary-proto");
- args.push_back("--jvm_arg=-Ddse.product_type=DATASTAX_APOLLO");
- return ccm_execute(args);
- }
-
- bool stop_cluster() {
- Process::Args args;
- args.push_back("stop");
- return ccm_execute(args);
- }
-
- bool start_node(unsigned int node) {
- Process::Args args;
- args.push_back(node_name(node));
- args.push_back("start");
- args.push_back("--root");
- args.push_back("--wait-for-binary-proto");
- args.push_back("--jvm_arg=-Ddse.product_type=DATASTAX_APOLLO");
- return ccm_execute(args);
- }
-
- bool stop_node(unsigned int node, bool is_kill = false) {
- Process::Args args;
- args.push_back(node_name(node));
- args.push_back("stop");
- if (is_kill) {
- args.push_back("--not-gently");
- }
- return ccm_execute(args);
- }
-
-private:
- std::string node_name(int node) {
- std::stringstream node_name;
- node_name << "node" << node;
- return node_name.str();
- }
-
- bool ccm_execute(Process::Args args) {
- Process::Args command;
- command.push_back("docker");
- command.push_back("exec");
- command.push_back(get_proxy_id());
- command.push_back("ccm");
- command.insert(command.end(), args.begin(), args.end());
- Process::Result result = Process::execute(command);
- return result.exit_status == 0;
- }
-
-private:
- static std::string get_proxy_id() {
- if (proxy_id_.empty()) {
- Process::Args command;
- command.push_back("docker");
- command.push_back("ps");
- command.push_back("-aqf");
- command.push_back("ancestor=single_endpoint");
- Process::Result result = Process::execute(command);
- proxy_id_ = Utils::trim(result.standard_output);
- }
- return proxy_id_;
- }
-
- static bool is_proxy_running() { return !get_proxy_id().empty(); }
-
- static bool start_proxy() {
- if (is_proxy_running()) return true;
-
- Process::Args command;
-#ifdef WIN32
- command.push_back("powershell");
-#endif
- command.push_back(proxy_run_script_);
- Process::Result result = Process::execute(command);
- return result.exit_status == 0;
- }
-
- static bool stop_proxy() {
- Process::Args command;
- command.push_back("docker");
- command.push_back("kill");
- command.push_back(get_proxy_id());
- Process::Result result = Process::execute(command);
- return result.exit_status == 0;
- }
-
-private:
- static std::string proxy_path_;
- static std::string proxy_cred_bundles_path_;
- static std::string proxy_run_script_;
- static std::string proxy_id_;
-};
-
-std::string DbaasTests::proxy_path_;
-std::string DbaasTests::proxy_cred_bundles_path_ = PROXY_CREDS_BUNDLES;
-std::string DbaasTests::proxy_run_script_ = PROXY_RUN_SCRIPT;
-std::string DbaasTests::proxy_id_;
-
-/**
- * Perform connection to DBaaS SNI single endpoint docker image.
- *
- * This test will perform a connection to a DBaaS SNI single endpoint while ensuring proper
- * automatic cloud configuration with address resolution.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @since 2.14.0
- * @expected_result Successful address resolution and connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, ResolveAndConnect) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-}
-
-/**
- * Perform query using a simple statement against the DBaaS SNI single endpoint docker image.
- *
- * This test will perform a connection and execute a simple statement query against the
- * system.local table to ensure query execution to a DBaaS SNI single endpoint while validating the
- * results.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @test_category queries
- * @since 2.14.0
- * @expected_result Simple statement is executed and nodes are validated.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, QueryEachNode) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false).with_load_balance_round_robin();
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- ServerNames server_names;
- for (int i = 0; i < 3; ++i) {
- Result result = session_.execute(SELECT_ALL_SYSTEM_LOCAL_CQL);
- Uuid expected_host_id = Uuid(result.server_name());
- Row row = result.first_row();
-
- Uuid host_id = row.column_by_name("host_id");
- int node = get_node_id(row.column_by_name("rpc_address").str());
- EXPECT_NE(0, node);
- EXPECT_EQ(expected_host_id, host_id);
- server_names.insert(ServerPair(node, host_id.str()));
- }
-
- EXPECT_EQ(3u, server_names.size()); // Ensure all three nodes were queried
-}
-
-/**
- * Create function and aggregate definitions and ensure the schema metadata is reflected when
- * execute against the DBaaS SNI single endpoint docker image.
- *
- * This test will perform a connection and execute create function/aggregate queries to ensure
- * schema metadata using a DBaaS SNI single endpoint is handled properly.
- *
- * @jira_ticket CPP-815
- * @test_category dbaas
- * @test_category queries:schema_metadata:udf
- * @since 2.14.0
- * @expected_result Function/Aggregate definitions schema metadata are validated.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, SchemaMetadata) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- // clang-format off
- session_.execute("CREATE OR REPLACE FUNCTION avg_state(state tuple, val int) "
- "CALLED ON NULL INPUT RETURNS tuple "
- "LANGUAGE java AS "
- "'if (val != null) {"
- "state.setInt(0, state.getInt(0) + 1);"
- "state.setLong(1, state.getLong(1) + val.intValue());"
- "};"
- "return state;'"
- ";");
- session_.execute("CREATE OR REPLACE FUNCTION avg_final (state tuple) "
- "CALLED ON NULL INPUT RETURNS double "
- "LANGUAGE java AS "
- "'double r = 0;"
- "if (state.getInt(0) == 0) return null;"
- "r = state.getLong(1);"
- "r /= state.getInt(0);"
- "return Double.valueOf(r);'"
- ";");
- session_.execute("CREATE OR REPLACE AGGREGATE average(int) "
- "SFUNC avg_state STYPE tuple FINALFUNC avg_final "
- "INITCOND(0, 0);");
- // clang-format on
-
- const CassSchemaMeta* schema_meta = cass_session_get_schema_meta(session_.get());
- ASSERT_TRUE(schema_meta != NULL);
- const CassKeyspaceMeta* keyspace_meta =
- cass_schema_meta_keyspace_by_name(schema_meta, default_keyspace().c_str());
- ASSERT_TRUE(keyspace_meta != NULL);
-
- { // Function `avg_state`
- const char* data = NULL;
- size_t length = 0;
- const CassDataType* datatype = NULL;
-
- const CassFunctionMeta* function_meta =
- cass_keyspace_meta_function_by_name(keyspace_meta, "avg_state", "tuple,int");
- ASSERT_TRUE(function_meta != NULL);
- cass_function_meta_name(function_meta, &data, &length);
- EXPECT_EQ("avg_state", std::string(data, length));
- cass_function_meta_full_name(function_meta, &data, &length);
- EXPECT_EQ("avg_state(tuple,int)", std::string(data, length));
- cass_function_meta_body(function_meta, &data, &length);
- EXPECT_EQ("if (val != null) {state.setInt(0, state.getInt(0) + 1);state.setLong(1, "
- "state.getLong(1) + val.intValue());};return state;",
- std::string(data, length));
- cass_function_meta_language(function_meta, &data, &length);
- EXPECT_EQ("java", std::string(data, length));
- EXPECT_TRUE(cass_function_meta_called_on_null_input(function_meta));
- ASSERT_EQ(2u, cass_function_meta_argument_count(function_meta));
- cass_function_meta_argument(function_meta, 0, &data, &length, &datatype);
- EXPECT_EQ("state", std::string(data, length));
- EXPECT_EQ(CASS_VALUE_TYPE_TUPLE, cass_data_type_type(datatype));
- ASSERT_EQ(2u, cass_data_type_sub_type_count(datatype));
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(cass_data_type_sub_data_type(datatype, 0)));
- EXPECT_EQ(CASS_VALUE_TYPE_BIGINT,
- cass_data_type_type(cass_data_type_sub_data_type(datatype, 1)));
- cass_function_meta_argument(function_meta, 1, &data, &length, &datatype);
- EXPECT_EQ("val", std::string(data, length));
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(datatype));
- datatype = cass_function_meta_argument_type_by_name(function_meta, "state");
- EXPECT_EQ(CASS_VALUE_TYPE_TUPLE, cass_data_type_type(datatype));
- ASSERT_EQ(2u, cass_data_type_sub_type_count(datatype));
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(cass_data_type_sub_data_type(datatype, 0)));
- EXPECT_EQ(CASS_VALUE_TYPE_BIGINT,
- cass_data_type_type(cass_data_type_sub_data_type(datatype, 1)));
- datatype = cass_function_meta_argument_type_by_name(function_meta, "val");
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(datatype));
- datatype = cass_function_meta_return_type(function_meta);
- EXPECT_EQ(CASS_VALUE_TYPE_TUPLE, cass_data_type_type(datatype));
- ASSERT_EQ(2u, cass_data_type_sub_type_count(datatype));
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(cass_data_type_sub_data_type(datatype, 0)));
- EXPECT_EQ(CASS_VALUE_TYPE_BIGINT,
- cass_data_type_type(cass_data_type_sub_data_type(datatype, 1)));
- }
-
- { // Aggregate `average`
- const char* data = NULL;
- size_t length = 0;
- const CassDataType* datatype = NULL;
-
- const CassAggregateMeta* aggregate_meta =
- cass_keyspace_meta_aggregate_by_name(keyspace_meta, "average", "int");
- ASSERT_TRUE(aggregate_meta != NULL);
- cass_aggregate_meta_name(aggregate_meta, &data, &length);
- EXPECT_EQ("average", std::string(data, length));
- cass_aggregate_meta_full_name(aggregate_meta, &data, &length);
- EXPECT_EQ("average(int)", std::string(data, length));
- ASSERT_EQ(1u, cass_aggregate_meta_argument_count(aggregate_meta));
- datatype = cass_aggregate_meta_argument_type(aggregate_meta, 0);
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(datatype));
- datatype = cass_aggregate_meta_return_type(aggregate_meta);
- EXPECT_EQ(CASS_VALUE_TYPE_DOUBLE, cass_data_type_type(datatype));
- datatype = cass_aggregate_meta_state_type(aggregate_meta);
- EXPECT_EQ(CASS_VALUE_TYPE_TUPLE, cass_data_type_type(datatype));
- ASSERT_EQ(2u, cass_data_type_sub_type_count(datatype));
- EXPECT_EQ(CASS_VALUE_TYPE_INT, cass_data_type_type(cass_data_type_sub_data_type(datatype, 0)));
- EXPECT_EQ(CASS_VALUE_TYPE_BIGINT,
- cass_data_type_type(cass_data_type_sub_data_type(datatype, 1)));
- const CassFunctionMeta* function_meta = cass_aggregate_meta_state_func(aggregate_meta);
- cass_function_meta_name(function_meta, &data, &length);
- EXPECT_EQ("avg_state", std::string(data, length));
- function_meta = cass_aggregate_meta_final_func(aggregate_meta);
- cass_function_meta_name(function_meta, &data, &length);
- EXPECT_EQ("avg_final", std::string(data, length));
- const CassValue* initcond = cass_aggregate_meta_init_cond(aggregate_meta);
- EXPECT_EQ(CASS_VALUE_TYPE_VARCHAR, cass_value_type(initcond));
- EXPECT_EQ(Text("(0, 0)"), Text(initcond));
- ASSERT_TRUE(true);
- }
-
- cass_schema_meta_free(schema_meta);
-}
-
-/**
- * Ensure guardrails are enabled when performing a query against the DBaaS SNI single endpoint
- * docker image.
- *
- * This test will perform a connection and execute a simple insert statement query against the
- * server using a valid consistency level.DBaaS SNI single endpoint while validating the
- * insert occured.
- *
- * @jira_ticket CPP-813
- * @test_category dbaas
- * @test_category queries:guard_rails
- * @since 2.14.0
- * @expected_result Simple statement is executed and is validated.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, ConsistencyGuardrails) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- session_.execute(
- format_string(CASSANDRA_KEY_VALUE_TABLE_FORMAT, default_table().c_str(), "int", "int"));
- CHECK_FAILURE;
-
- session_.execute(Statement(
- format_string(CASSANDRA_KEY_VALUE_INSERT_FORMAT, default_table().c_str(), "0", "1")));
- Result result = session_.execute(
- Statement(format_string(CASSANDRA_SELECT_VALUE_FORMAT, default_table().c_str(), "0")));
- EXPECT_EQ(1u, result.row_count());
- ASSERT_EQ(1u, result.column_count());
- ASSERT_EQ(Integer(1), result.first_row().next().as());
-}
-
-/**
- * Ensure guardrails are enabled when performing a query against the DBaaS SNI single endpoint
- * docker image.
- *
- * This test will perform a connection and execute a simple statement query against the
- * server using an invalid consistency level.DBaaS SNI single endpoint while validating the
- * error.
- *
- * @jira_ticket CPP-813
- * @test_category dbaas
- * @test_category queries:guard_rails
- * @since 2.14.0
- * @expected_result Simple statement is executed and guard rail error is validated.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, ConsistencyGuardrailsInvalid) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- session_.execute(
- format_string(CASSANDRA_KEY_VALUE_TABLE_FORMAT, default_table().c_str(), "int", "int"));
- CHECK_FAILURE
-
- Statement statement(
- format_string(CASSANDRA_KEY_VALUE_INSERT_FORMAT, default_table().c_str(), "0", "1"));
- statement.set_consistency(
- CASS_CONSISTENCY_LOCAL_ONE); // Override default DBaaS configured consistency
- Result result = session_.execute(statement, false);
- EXPECT_TRUE(result.error_code() != CASS_OK)
- << "Statement execution succeeded; guardrails may not be enabled";
- EXPECT_TRUE(contains(result.error_message(),
- "Provided value LOCAL_ONE is not allowed for Write Consistency Level"));
-}
-
-/**
- * Perform query ensuring token aware is enabled by default.
- *
- * This test will perform a connection and execute a insert query against to ensure that token
- * aware is enabled by default when automatically configured .
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @test_category queries
- * @since 2.14.0
- * @expected_result Simple statement is executed and validated against replicas.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, DcAwareTokenAwareRoutingDefault) {
- CHECK_FAILURE;
-
- ServerNames server_names = get_server_names();
-
- // Validate replicas are used during token aware routing
- std::vector > replicas;
- replicas.push_back(std::pair(0, 2)); // query key, node id (last octet of rpc_address)
- replicas.push_back(std::pair(1, 2));
- replicas.push_back(std::pair(2, 2));
- replicas.push_back(std::pair(3, 1));
- replicas.push_back(std::pair(4, 3));
- replicas.push_back(std::pair(5, 2));
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- for (std::vector >::iterator it = replicas.begin(), end = replicas.end();
- it != end; ++it) {
- Statement statement(SELECT_ALL_SYSTEM_LOCAL_CQL, 1);
- statement.set_consistency(CASS_CONSISTENCY_ONE);
- statement.add_key_index(0);
- statement.set_keyspace("system");
- statement.bind(0, Integer(it->first));
-
- Result result = session_.execute(
- statement, false); // No bind variables exist so statement will return error
- EXPECT_EQ(server_names[it->second], result.server_name());
- }
-}
-
-/**
- * Attempt connection to DBaaS SNI single endpoint docker image manually setting auth.
- *
- * This test will perform a connection to a DBaaS SNI single endpoint while ensuring proper
- * automatic cloud configuration with address resolution where the authentication is not available.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas:auth
- * @since 2.14.0
- * @expected_result Successful address resolution and connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, ResolveAndConnectWithoutCredsInBundle) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1_no_creds().c_str()));
- cluster.with_credentials("cassandra", "cassandra");
- connect(cluster);
-}
-
-/**
- * Attempt connection to DBaaS SNI single endpoint docker image leaving auth unset.
- *
- * This test will perform a connection to a DBaaS SNI single endpoint while ensuring proper
- * automatic cloud configuration with address resolution where the authentication is not set.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @since 2.14.0
- * @expected_result Failed to establish a connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, InvalidWithoutCreds) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1_no_creds().c_str()));
- try {
- connect(cluster);
- EXPECT_TRUE(false) << "Connection established";
- } catch (Session::Exception& se) {
- EXPECT_EQ(CASS_ERROR_SERVER_BAD_CREDENTIALS, se.error_code());
- }
-}
-
-/**
- * Attempt connection to DBaaS SNI single endpoint docker image using invalid metadata server.
- *
- * This test will attempt a connection to a DBaaS SNI single endpoint using an invalid metadata
- * server. The connection should not succeed as no resolution will be possible.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @since 2.14.0
- * @expected_result Failed to establish a connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, InvalidMetadataServer) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- EXPECT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1_unreachable().c_str()));
- try {
- connect(cluster);
- EXPECT_TRUE(false) << "Connection established";
- } catch (Session::Exception& se) {
- EXPECT_EQ(CASS_ERROR_LIB_NO_HOSTS_AVAILABLE, se.error_code());
- }
-}
-
-/**
- * Attempt connection to DBaaS SNI single endpoint docker image using invalid certificate.
- *
- * This test will attempt a connection to a DBaaS SNI single endpoint using an invalid certificate.
- * The connection should not succeed as no resolution will be possible.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @since 2.14.0
- * @expected_result Failed to establish a connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, InvalidCertificate) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- EXPECT_EQ(CASS_ERROR_LIB_BAD_PARAMS,
- cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1_no_cert().c_str()));
- try {
- connect(cluster);
- EXPECT_TRUE(false) << "Connection established";
- } catch (Session::Exception& se) {
- EXPECT_EQ(CASS_ERROR_LIB_NO_HOSTS_AVAILABLE, se.error_code());
- }
-}
-
-/**
- * Attempt connection to DBaaS SNI single endpoint docker image using invalid CA.
- *
- * This test will attempt a connection to a DBaaS SNI single endpoint using an invalid CA. The
- * connection should not succeed as no resolution will be possible.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @since 2.14.0
- * @expected_result Failed to establish a connection.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, InvalidCertificateAuthority) {
- CHECK_FAILURE;
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1_invalid_ca().c_str()));
- try {
- connect(cluster);
- EXPECT_TRUE(false) << "Connection established";
- } catch (Session::Exception& se) {
- EXPECT_EQ(CASS_ERROR_LIB_NO_HOSTS_AVAILABLE, se.error_code());
- }
-}
-
-/**
- * Perform query with nodes down against the DBaaS SNI single endpoint docker image.
- *
- * This test will perform a connection and execute a simple statement query against the
- * system.local table to ensure query execution to a DBaaS SNI single endpoint while validating the
- * results.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @test_category queries
- * @since 2.14.0
- * @expected_result Simple statement is executed and validated while node(s) are down.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, QueryWithNodesDown) {
- CHECK_FAILURE;
-
- ServerNames server_names = get_server_names();
-
- Cluster cluster = default_cluster(false);
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- EXPECT_TRUE(stop_node(1));
- for (int i = 0; i < 8; ++i) {
- EXPECT_NE(server_names[1], session_.execute(SELECT_ALL_SYSTEM_LOCAL_CQL).server_name());
- }
-
- EXPECT_TRUE(stop_node(3));
- for (int i = 0; i < 8; ++i) {
- EXPECT_EQ(server_names[2], session_.execute(SELECT_ALL_SYSTEM_LOCAL_CQL).server_name());
- }
-
- EXPECT_TRUE(start_cluster());
-}
-
-/**
- * Ensure reconnection occurs during full outage.
- *
- * This test will perform a connection, full outage will occur and the the cluster will be restarted
- * while executing a simple statement query against the system.local table to ensure reconnection
- * after full outage.
- *
- * @jira_ticket CPP-787
- * @test_category dbaas
- * @test_category queries
- * @since 2.14.0
- * @expected_result Simple statement is executed and validated after full outage.
- */
-CASSANDRA_INTEGRATION_TEST_F(DbaasTests, FullOutage) {
- CHECK_FAILURE;
-
- ServerNames server_names = get_server_names();
-
- Cluster cluster = default_cluster(false).with_constant_reconnect(10); // Quick reconnect
- ASSERT_EQ(CASS_OK, cass_cluster_set_cloud_secure_connection_bundle_no_ssl_lib_init(
- cluster.get(), creds_v1().c_str()));
- connect(cluster);
-
- EXPECT_TRUE(stop_cluster());
-
- Statement statement(SELECT_ALL_SYSTEM_LOCAL_CQL);
- EXPECT_EQ(CASS_ERROR_LIB_NO_HOSTS_AVAILABLE, session_.execute(statement, false).error_code());
-
- EXPECT_TRUE(start_cluster());
- EXPECT_EQ(CASS_OK, session_.execute(statement).error_code());
-}