/** * Test established connection with a normal load query */ void test_normal_load() { //Create and use the simple keyspace test_utils::execute_query(session_, str(boost::format(test_utils::CREATE_KEYSPACE_SIMPLE_FORMAT) % test_utils::SIMPLE_KEYSPACE % "1")); test_utils::execute_query(session_, str(boost::format("USE %s") % test_utils::SIMPLE_KEYSPACE)); //Create a table to fill with numbers and characters test_utils::execute_query(session_, "CREATE TABLE normal_load (key int PRIMARY KEY, a int, b float, c text)"); //Perform queries and validate inserted data for (int n = 0; n < NUMBER_OF_ITERATIONS; ++n) { std::string text = test_utils::generate_random_string(16); test_utils::execute_query(session_, str(boost::format("INSERT INTO normal_load (key, a, b, c) VALUES (%d, %d, %f, '%s')") % n % (n * 100) % (n * .001f) % text)); test_utils::CassResultPtr result; test_utils::execute_query(session_, str(boost::format("SELECT * FROM normal_load WHERE key = %d") % n), &result); BOOST_REQUIRE_EQUAL(cass_result_column_count(result.get()), 4u); BOOST_REQUIRE_EQUAL(cass_result_row_count(result.get()), 1u); const CassRow* row = cass_result_first_row(result.get()); const CassValue* value; value = cass_row_get_column_by_name(row, "key"); BOOST_REQUIRE(value != NULL); cass_int32_t key; BOOST_REQUIRE_EQUAL(cass_value_get_int32(value, &key), CASS_OK); BOOST_CHECK_EQUAL(key, n); value = cass_row_get_column_by_name(row, "a"); BOOST_REQUIRE(value != NULL); cass_int32_t a; BOOST_REQUIRE_EQUAL(cass_value_get_int32(value, &a), CASS_OK); BOOST_CHECK_EQUAL(a, (n * 100)); value = cass_row_get_column_by_name(row, "b"); BOOST_REQUIRE(value != NULL); cass_float_t b; BOOST_REQUIRE_EQUAL(cass_value_get_float(value, &b), CASS_OK); BOOST_CHECK_EQUAL(b, (n * .001f)); value = cass_row_get_column_by_name(row, "c"); BOOST_REQUIRE(value != NULL); CassString c; BOOST_REQUIRE_EQUAL(cass_value_get_string(value, &c.data, &c.length), CASS_OK); BOOST_CHECK(test_utils::Value<CassString>::equal(c, CassString(text.c_str()))); } //Drop the table and keyspace test_utils::execute_query(session_, "DROP TABLE normal_load"); test_utils::execute_query(session_, str(boost::format("DROP KEYSPACE %s") % test_utils::SIMPLE_KEYSPACE)); }
CassError select_from_basic(CassSession* session, const char* key, Basic* basic) { CassError rc = CASS_OK; CassStatement* statement = NULL; CassFuture* future = NULL; const char* query = "SELECT * FROM examples.basic WHERE key = ?"; statement = cass_statement_new(query, 1); cass_statement_bind_string_by_name(statement, "key", key); future = cass_session_execute(session, statement); cass_future_wait(future); rc = cass_future_error_code(future); if (rc != CASS_OK) { print_error(future); } else { const CassResult* result = cass_future_get_result(future); CassIterator* iterator = cass_iterator_from_result(result); if (cass_iterator_next(iterator)) { const CassRow* row = cass_iterator_get_row(iterator); cass_value_get_bool(cass_row_get_column_by_name(row, "BLN"), &basic->bln); cass_value_get_double(cass_row_get_column_by_name(row, "dbl"), &basic->dbl); cass_value_get_float(cass_row_get_column_by_name(row, "flt"), &basic->flt); cass_value_get_int32(cass_row_get_column_by_name(row, "\"i32\""), &basic->i32); cass_value_get_int64(cass_row_get_column_by_name(row, "i64"), &basic->i64); } cass_result_free(result); cass_iterator_free(iterator); } cass_future_free(future); cass_statement_free(statement); return rc; }
CassError select_from_basic(CassSession* session, const CassPrepared * prepared, const char* key, Basic* basic) { CassError rc = CASS_OK; CassStatement* statement = NULL; CassFuture* future = NULL; statement = cass_prepared_bind(prepared); cass_statement_bind_string(statement, 0, key); future = cass_session_execute(session, statement); cass_future_wait(future); rc = cass_future_error_code(future); if (rc != CASS_OK) { print_error(future); } else { const CassResult* result = cass_future_get_result(future); CassIterator* iterator = cass_iterator_from_result(result); if (cass_iterator_next(iterator)) { const CassRow* row = cass_iterator_get_row(iterator); cass_value_get_bool(cass_row_get_column(row, 1), &basic->bln); cass_value_get_double(cass_row_get_column(row, 2), &basic->dbl); cass_value_get_float(cass_row_get_column(row, 3), &basic->flt); cass_value_get_int32(cass_row_get_column(row, 4), &basic->i32); cass_value_get_int64(cass_row_get_column(row, 5), &basic->i64); } cass_result_free(result); cass_iterator_free(iterator); } cass_future_free(future); cass_statement_free(statement); return rc; }
static CassError get(const CassValue* value, cass_float_t* output) { return cass_value_get_float(value, output); }