@@ -21,6 +21,7 @@ Cassandra's native protocol and Cassandra Query Language v3.
2121- [ Blacklist] , [ whitelist DC] , and [ blacklist DC] load balancing policies
2222- [ Custom] authenticators
2323- [ Reverse DNS] with SSL peer identity verification support
24+ - Randomized contact points
2425
2526More information about features included in 2.3 can be found in this [ blog
2627post] ( http://www.datastax.com/dev/blog/datastax-c-driver-2-3-ga-released ) .
@@ -93,14 +94,18 @@ There are several examples provided here: [examples](https://github.com/datastax
9394#include < cassandra.h>
9495#include < stdio.h>
9596
96- int main () {
97+ int main (int argc, char * argv [ ] ) {
9798 /* Setup and connect to cluster * /
9899 CassFuture* connect_future = NULL;
99100 CassCluster* cluster = cass_cluster_new();
100101 CassSession* session = cass_session_new();
102+ char* hosts = "127.0.0.1";
103+ if (argc > 1) {
104+ hosts = argv[ 1] ;
105+ }
101106
102107 /* Add contact points * /
103- cass_cluster_set_contact_points (cluster, "127.0.0.1,127.0.0.2,127.0.0.3" );
108+ cass_cluster_set_contact_points(cluster, hosts );
104109
105110 /* Provide the cluster object as configuration to connect the session * /
106111 connect_future = cass_session_connect(session, cluster);
@@ -109,37 +114,32 @@ int main() {
109114 CassFuture* close_future = NULL;
110115
111116 /* Build statement and execute query */
112- CassStatement* statement
113- = cass_statement_new("SELECT keyspace_name "
114- "FROM system.schema_keyspaces", 0);
117+ const char* query = "SELECT release_version FROM system.local";
118+ CassStatement* statement = cass_statement_new(query, 0);
115119
116120 CassFuture* result_future = cass_session_execute(session, statement);
117121
118- if(cass_future_error_code(result_future) == CASS_OK) {
119- /* Retrieve result set and iterate over the rows */
122+ if (cass_future_error_code(result_future) == CASS_OK) {
123+ /* Retrieve result set and get the first row */
120124 const CassResult* result = cass_future_get_result(result_future);
121- CassIterator* rows = cass_iterator_from_result (result);
125+ const CassRow* row = cass_result_first_row (result);
122126
123- while(cass_iterator_next(rows)) {
124- const CassRow* row = cass_iterator_get_row(rows);
125- const CassValue* value = cass_row_get_column_by_name(row, "keyspace_name");
127+ if (row) {
128+ const CassValue* value = cass_row_get_column_by_name(row, "release_version");
126129
127- const char* keyspace;
128- size_t keyspace_length;
129- cass_value_get_string (value, &keyspace, &keyspace_length);
130- printf("keyspace_name: '%.* s'\n",
131- (int)keyspace_length, keyspace);
130+ const char* release_version;
131+ size_t release_version_length;
132+ cass_value_get_string(value, &release_version, &release_version_length);
133+ printf("release_version: '%.*s'\n", (int)release_version_length, release_version);
132134 }
133135
134136 cass_result_free(result);
135- cass_iterator_free(rows);
136137 } else {
137138 /* Handle error */
138139 const char* message;
139140 size_t message_length;
140141 cass_future_error_message(result_future, &message, &message_length);
141- fprintf(stderr, "Unable to run query: '%.* s'\n",
142- (int)message_length, message);
142+ fprintf(stderr, "Unable to run query: '%.*s'\n", (int)message_length, message);
143143 }
144144
145145 cass_statement_free(statement);
@@ -154,8 +154,7 @@ int main() {
154154 const char* message;
155155 size_t message_length;
156156 cass_future_error_message(connect_future, &message, &message_length);
157- fprintf(stderr, "Unable to connect: '%.* s'\n",
158- (int)message_length, message);
157+ fprintf(stderr, "Unable to connect: '%.* s'\n", (int)message_length, message);
159158 }
160159
161160 cass_future_free(connect_future);
0 commit comments