}
}
+static enum sql_result_error_type
+driver_cassandra_error_is_uncertain(CassError error)
+{
+ switch (error) {
+ case CASS_ERROR_SERVER_WRITE_FAILURE:
+ case CASS_ERROR_SERVER_WRITE_TIMEOUT:
+ case CASS_ERROR_SERVER_UNAVAILABLE:
+ case CASS_ERROR_LIB_REQUEST_TIMED_OUT:
+ return SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN;
+ default:
+ return SQL_RESULT_ERROR_TYPE_UNKNOWN;
+ }
+}
+
static void query_callback(CassFuture *future, void *context)
{
struct cassandra_result *result = context;
/* Timeouts bring uncertainty whether the query succeeded or
not. Also _SERVER_UNAVAILABLE could have actually written
enough copies of the data for the query to succeed. */
- result->api.error_type = error == CASS_ERROR_SERVER_WRITE_TIMEOUT ||
- error == CASS_ERROR_SERVER_WRITE_FAILURE ||
- error == CASS_ERROR_SERVER_UNAVAILABLE ||
- error == CASS_ERROR_LIB_REQUEST_TIMED_OUT ?
- SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN :
- SQL_RESULT_ERROR_TYPE_UNKNOWN;
+ result->api.error_type = driver_cassandra_error_is_uncertain(error);
result->error = i_strdup_printf("Query '%s' failed: %.*s (in %u.%03u secs%s)",
result->query, (int)errsize, errmsg, msecs/1000, msecs%1000,
result->page_num == 0 ? "" : t_strdup_printf(", page %u", result->page_num));