Ejemplo n.º 1
0
  void validate_results(int num_rows) {
    std::string select_query = str(boost::format("SELECT * FROM %s WHERE tweet_id = ?;") % BatchTests::SIMPLE_TABLE_NAME);

    for (int y = 0; y < num_rows; y++)
    {
      test_utils::CassStatementPtr select_statement(cass_statement_new(select_query.c_str(), 1));
      BOOST_REQUIRE(cass_statement_bind_int32(select_statement.get(), 0, y) == CASS_OK);
      test_utils::CassFuturePtr select_future(cass_session_execute(session, select_statement.get()));
      test_utils::wait_and_check_error(select_future.get());
      test_utils::CassResultPtr result(cass_future_get_result(select_future.get()));
      const CassValue* column = cass_row_get_column(cass_result_first_row(result.get()), 1);

      CassString result_value;
      BOOST_REQUIRE(cass_value_type(column) == CASS_VALUE_TYPE_VARCHAR);
      BOOST_REQUIRE(test_utils::Value<CassString>::get(column, &result_value) == CASS_OK);
      BOOST_REQUIRE(test_utils::Value<CassString>::equal(result_value, str(boost::format("test data %s") % y).c_str()));
    }
  }
Ejemplo n.º 2
0
  /**
   * Verify the phone UDT field names
   *
   * @param value The phone UDT value to iterate over
   */
  void verify_phone_udt_field_names(const CassValue* value) {
    // Ensure the value is a UDT and create the iterator for the validation
    BOOST_REQUIRE_EQUAL(cass_value_type(value), CASS_VALUE_TYPE_UDT);
    BOOST_REQUIRE_EQUAL(cass_value_item_count(value), 2);
    test_utils::CassIteratorPtr iterator(cass_iterator_from_user_type(value));

    // Verify alias field name
    BOOST_REQUIRE(cass_iterator_next(iterator.get()));
    CassString alias_field_name;
    BOOST_REQUIRE_EQUAL(cass_iterator_get_user_type_field_name(iterator.get(), &alias_field_name.data, &alias_field_name.length), CASS_OK);
    BOOST_REQUIRE(test_utils::Value<CassString>::equal("alias", alias_field_name));

    // Verify number field name
    BOOST_REQUIRE(cass_iterator_next(iterator.get()));
    CassString number_field_name;
    BOOST_REQUIRE_EQUAL(cass_iterator_get_user_type_field_name(iterator.get(), &number_field_name.data, &number_field_name.length), CASS_OK);
    BOOST_REQUIRE(test_utils::Value<CassString>::equal("number", number_field_name));
  }
Ejemplo n.º 3
0
  /**
   * Verify the address UDT field names
   *
   * @param value The address UDT value to iterate over
   */
  void verify_address_udt_field_names(const CassValue* value) {
    // Ensure the value is a UDT and create the iterator for the validation
    BOOST_REQUIRE_EQUAL(cass_value_type(value), CASS_VALUE_TYPE_UDT);
    BOOST_REQUIRE_EQUAL(cass_value_item_count(value), 3);
    test_utils::CassIteratorPtr iterator(cass_iterator_from_user_type(value));

    // Verify street field name
    BOOST_REQUIRE(cass_iterator_next(iterator.get()));
    CassString street_field_name;
    BOOST_REQUIRE_EQUAL(cass_iterator_get_user_type_field_name(iterator.get(), &street_field_name.data, &street_field_name.length), CASS_OK);
    BOOST_REQUIRE(test_utils::Value<CassString>::equal("street", street_field_name));

    // Verify zip field name
    BOOST_REQUIRE(cass_iterator_next(iterator.get()));
    CassString zip_field_name;
    BOOST_REQUIRE_EQUAL(cass_iterator_get_user_type_field_name(iterator.get(), &zip_field_name.data, &zip_field_name.length), CASS_OK);
    BOOST_REQUIRE(test_utils::Value<CassString>::equal("ZIP", zip_field_name));

    // Verify phone numbers field name
    BOOST_REQUIRE(cass_iterator_next(iterator.get()));
    CassString phone_numbers_field_name;
    BOOST_REQUIRE_EQUAL(cass_iterator_get_user_type_field_name(iterator.get(), &phone_numbers_field_name.data, &phone_numbers_field_name.length), CASS_OK);
    BOOST_REQUIRE(test_utils::Value<CassString>::equal("phone_numbers", phone_numbers_field_name));
  }
Ejemplo n.º 4
0
CassError select_from_udt(CassSession* session) {
  CassError rc = CASS_OK;
  CassStatement* statement = NULL;
  CassFuture* future = NULL;

  const char* query = "SELECT * FROM examples.udt";

  statement = cass_statement_new(query, 0);

  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 = NULL;
    CassIterator* rows = NULL;

    result = cass_future_get_result(future);
    rows = cass_iterator_from_result(result);

    while(cass_iterator_next(rows)) {
      CassUuid id;
      char id_str[CASS_UUID_STRING_LENGTH];
      const CassRow* row = cass_iterator_get_row(rows);
      const CassValue* id_value = cass_row_get_column_by_name(row, "id");
      const CassValue* address_value = cass_row_get_column_by_name(row, "address");
      CassIterator* fields = cass_iterator_fields_from_user_type(address_value);

      cass_value_get_uuid(id_value, &id);
      cass_uuid_string(id, id_str);

      printf("id %s ", id_str);

      while(fields != NULL && cass_iterator_next(fields)) {
        const char* field_name;
        size_t field_name_length;
        const CassValue* field_value = NULL;
        cass_iterator_get_user_type_field_name(fields, &field_name, &field_name_length);
        field_value = cass_iterator_get_user_type_field_value(fields);
        printf("%.*s ", (int)field_name_length, field_name);

        if (!cass_value_is_null(field_value)) {
          if (cass_value_type(field_value) == CASS_VALUE_TYPE_VARCHAR) {
            const char* text;
            size_t text_length;
            cass_value_get_string(field_value, &text, &text_length);
            printf("\"%.*s\" ", (int)text_length, text);
          } else if (cass_value_type(field_value) == CASS_VALUE_TYPE_INT) {
            cass_int32_t i;
            cass_value_get_int32(field_value, &i);
            printf("%d ", i);
          } else if (cass_value_type(field_value) == CASS_VALUE_TYPE_SET) {
            CassIterator* phone_numbers = cass_iterator_from_collection(field_value);
            while (cass_iterator_next(phone_numbers)) {
              const CassValue* phone_value = cass_iterator_get_value(phone_numbers);
              CassIterator* phone_fields = cass_iterator_fields_from_user_type(phone_value);
              assert(cass_value_type(phone_value) == CASS_VALUE_TYPE_UDT);
              while (cass_iterator_next(phone_fields)) {
                const CassValue* phone_number_value = cass_iterator_get_user_type_field_value(phone_fields);
                cass_int32_t i;
                cass_value_get_int32(phone_number_value, &i);
                printf("%d ", i);
              }
            }
          } else {
            printf("<invalid> ");
          }
        } else {
          printf("<null> ");
        }
      }

      printf("\n");
    }

    cass_result_free(result);
    cass_iterator_free(rows);
  }

  cass_future_free(future);
  cass_statement_free(statement);

  return rc;
}