static void _client(drizzle_con_st *con, client_state_st *state) { drizzle_return_t ret; drizzle_column_st *column; drizzle_row_t row; size_t *field_sizes; switch(state->state) { case CLIENT_STATE_START: drizzle_test("drizzle_query_str"); (void)drizzle_query_str(con, &state->result, "SELECT", &ret); if (ret == DRIZZLE_RETURN_IO_WAIT) { state->state = CLIENT_STATE_START; return; } else if (ret == DRIZZLE_RETURN_COULD_NOT_CONNECT) { state->state= CLIENT_STATE_DONE; return; } else if (ret != DRIZZLE_RETURN_OK) { drizzle_test_error("returned %s (%d)", drizzle_con_error(con), ret); } case CLIENT_STATE_RESULT: drizzle_test("drizzle_result_buffer"); ret = drizzle_result_buffer(&state->result); if (ret == DRIZZLE_RETURN_IO_WAIT) { state->state = CLIENT_STATE_RESULT; return; } else if (ret != DRIZZLE_RETURN_OK) { drizzle_test_error("returned %s (%d)", drizzle_con_error(con), ret); } drizzle_test("drizzle_con_protocol_version"); if (drizzle_con_protocol_version(con) != 10) { drizzle_test_error("no match"); } drizzle_test("drizzle_con_server_version"); if (strcmp(drizzle_con_server_version(con), "test_version")) drizzle_test_error("no match"); drizzle_test("drizzle_con_thread_id"); if (drizzle_con_thread_id(con) != 1) drizzle_test_error("no match"); drizzle_test("drizzle_con_scramble"); if (memcmp(drizzle_con_scramble(con), "ABCDEFGHIJKLMNOPQRST", DRIZZLE_MAX_SCRAMBLE_SIZE)) { drizzle_test_error("no match"); } /* We default to MySQL protocol right now, which sets this flag. */ drizzle_test("drizzle_con_capabilities"); if (drizzle_con_capabilities(con) != DRIZZLE_CAPABILITIES_PROTOCOL_41) drizzle_test_error("no match"); drizzle_test("drizzle_con_charset"); if (drizzle_con_charset(con) != 8) drizzle_test_error("no match"); drizzle_test("drizzle_con_status"); if (drizzle_con_status(con) != DRIZZLE_CON_STATUS_NONE) drizzle_test_error("no match"); drizzle_test("drizzle_con_packet_size"); if (drizzle_con_max_packet_size(con) != DRIZZLE_MAX_PACKET_SIZE) drizzle_test_error("no match"); drizzle_test("drizzle_column_next"); column= drizzle_column_next(&state->result); if (column == NULL) drizzle_test_error("column not found"); drizzle_test("drizzle_column_drizzle_result"); if (drizzle_column_drizzle_result(column) != &state->result) drizzle_test_error("no match"); drizzle_test("drizzle_column_catalog"); if (strcmp(drizzle_column_catalog(column), "test_catalog")) drizzle_test_error("no match"); drizzle_test("drizzle_column_db"); if (strcmp(drizzle_column_db(column), "test_db")) drizzle_test_error("no match"); drizzle_test("drizzle_column_table"); if (strcmp(drizzle_column_table(column), "test_table")) drizzle_test_error("no match"); drizzle_test("drizzle_column_orig_table"); if (strcmp(drizzle_column_orig_table(column), "test_orig_table")) drizzle_test_error("no match"); drizzle_test("drizzle_column_name"); if (strcmp(drizzle_column_name(column), "test_column_1")) drizzle_test_error("no match"); drizzle_test("drizzle_column_orig_name"); if (strcmp(drizzle_column_orig_name(column), "test_orig_column_1")) drizzle_test_error("no match"); drizzle_test("drizzle_column_charset"); if (drizzle_column_charset(column) != 8) drizzle_test_error("no match"); drizzle_test("drizzle_column_size"); if (drizzle_column_size(column) != 32) drizzle_test_error("no match"); drizzle_test("drizzle_column_max_size"); if (drizzle_column_max_size(column) != 12) drizzle_test_error("no match"); drizzle_test("drizzle_column_type_drizzle"); if (drizzle_column_type_drizzle(column) != DRIZZLE_COLUMN_TYPE_DRIZZLE_VARCHAR) drizzle_test_error("no match"); drizzle_test("drizzle_column_flags"); if (drizzle_column_flags(column) != DRIZZLE_COLUMN_FLAGS_NONE) drizzle_test_error("no match"); drizzle_test("drizzle_column_next"); column= drizzle_column_next(&state->result); if (column == NULL) drizzle_test_error("column not found"); drizzle_test("drizzle_column_name"); if (strcmp(drizzle_column_name(column), "test_column_2")) drizzle_test_error("no match"); drizzle_test("drizzle_column_next"); column= drizzle_column_next(&state->result); if (column != NULL) drizzle_test_error("column found"); drizzle_test("drizzle_column_prev"); column= drizzle_column_prev(&state->result); if (column == NULL) drizzle_test_error("column not found"); drizzle_test("drizzle_column_name"); if (strcmp(drizzle_column_name(column), "test_column_2")) drizzle_test_error("no match"); drizzle_test("drizzle_row_next"); row= drizzle_row_next(&state->result); if (row == NULL) drizzle_test_error("row not found"); if (strcmp(row[0], "test_field_1") || strcmp(row[1], "test_field_2")) drizzle_test_error("no match"); drizzle_test("drizzle_row_field_sizes"); field_sizes= drizzle_row_field_sizes(&state->result); if (field_sizes[0] != 12 || field_sizes[1] != 12) drizzle_test_error("no match"); drizzle_test("drizzle_row_prev"); row = drizzle_row_prev(&state->result); if (row == NULL) drizzle_test_error("row not found"); if (strcmp(row[0], "test_field_1") || strcmp(row[1], "test_field_2")) drizzle_test_error("no match"); drizzle_test("drizzle_row_next"); row = drizzle_row_next(&state->result); drizzle_test("drizzle_row_index"); row = drizzle_row_index(&state->result, 0); if (row == NULL) drizzle_test_error("row not found"); if (strcmp(row[0], "test_field_1") || strcmp(row[1], "test_field_2")) drizzle_test_error("no match"); drizzle_test("drizzle_row_index"); row = drizzle_row_index(&state->result, 1); if (row != NULL) drizzle_test_error("row found"); drizzle_test("drizzle_result_free"); drizzle_result_free(&state->result); state->state = CLIENT_STATE_DONE; case CLIENT_STATE_DONE: return; default: drizzle_test_error("invalid client state"); } }
static drizzle_column_st *next_column(drizzle_result_st *self_ptr) { return drizzle_column_next(self_ptr); }