From: Timo Sirainen Date: Fri, 15 Jul 2016 21:40:05 +0000 (-0500) Subject: lib-sql: Added sql_result_get_error_type(). X-Git-Tag: 2.2.26~475 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a91fc8e788a75b09b130caedbffffe96748259fa;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Added sql_result_get_error_type(). For now the only special error type is SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN. --- diff --git a/src/lib-sql/sql-api-private.h b/src/lib-sql/sql-api-private.h index ea47f5cba4..530e61ab6b 100644 --- a/src/lib-sql/sql-api-private.h +++ b/src/lib-sql/sql-api-private.h @@ -141,6 +141,7 @@ struct sql_result { struct sql_field_map *map; void *fetch_dest; size_t fetch_dest_size; + enum sql_result_error_type error_type; unsigned int failed:1; unsigned int failed_try_retry:1; diff --git a/src/lib-sql/sql-api.c b/src/lib-sql/sql-api.c index a47404f786..d9e879095f 100644 --- a/src/lib-sql/sql-api.c +++ b/src/lib-sql/sql-api.c @@ -323,6 +323,11 @@ const char *sql_result_get_error(struct sql_result *result) return result->v.get_error(result); } +enum sql_result_error_type sql_result_get_error_type(struct sql_result *result) +{ + return result->error_type; +} + static void sql_result_not_connected_free(struct sql_result *result ATTR_UNUSED) { diff --git a/src/lib-sql/sql-api.h b/src/lib-sql/sql-api.h index 773d3132e6..b0abc3bb02 100644 --- a/src/lib-sql/sql-api.h +++ b/src/lib-sql/sql-api.h @@ -24,6 +24,13 @@ struct sql_field_def { size_t offset; }; +enum sql_result_error_type { + SQL_RESULT_ERROR_TYPE_UNKNOWN = 0, + /* It's unknown whether write succeeded or not. This could be due to + a timeout or a disconnection from server. */ + SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN +}; + #define SQL_DEF_STRUCT(name, struct_name, type, c_type) \ { (type) + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \ ((struct struct_name *)0)->name, c_type), \ @@ -123,6 +130,7 @@ const char *const *sql_result_get_values(struct sql_result *result); /* Return last error message in result. */ const char *sql_result_get_error(struct sql_result *result); +enum sql_result_error_type sql_result_get_error_type(struct sql_result *result); /* Begin a new transaction. Currently you're limited to only one open transaction at a time. */