]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-sql: Added sql_result_get_error_type().
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 15 Jul 2016 21:40:05 +0000 (16:40 -0500)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Sun, 17 Jul 2016 18:22:03 +0000 (12:22 -0600)
For now the only special error type is SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN.

src/lib-sql/sql-api-private.h
src/lib-sql/sql-api.c
src/lib-sql/sql-api.h

index ea47f5cba4176b4b9c42db811f72a35ab344b6f0..530e61ab6b5c00064392abc850c329d3ed5de1c2 100644 (file)
@@ -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;
index a47404f786557c0c2c9c89e539d58518141c2049..d9e879095f6c0e1657e42899d2b0b0db6a588871 100644 (file)
@@ -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)
 {
index 773d3132e6a45ea433d6666a67d91dd5ed7ed701..b0abc3bb02f23e12d4fa11981724c79aff7cc873 100644 (file)
@@ -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. */