changeset 20526:9565305a8512

lib-sql: Added sql_result_get_error_type(). For now the only special error type is SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 15 Jul 2016 16:40:05 -0500
parents 49ab9d8293ba
children 231c1f214d40
files src/lib-sql/sql-api-private.h src/lib-sql/sql-api.c src/lib-sql/sql-api.h
diffstat 3 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-sql/sql-api-private.h	Thu Jul 14 16:16:52 2016 -0500
+++ b/src/lib-sql/sql-api-private.h	Fri Jul 15 16:40:05 2016 -0500
@@ -141,6 +141,7 @@
 	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;
--- a/src/lib-sql/sql-api.c	Thu Jul 14 16:16:52 2016 -0500
+++ b/src/lib-sql/sql-api.c	Fri Jul 15 16:40:05 2016 -0500
@@ -323,6 +323,11 @@
 	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)
 {
--- a/src/lib-sql/sql-api.h	Thu Jul 14 16:16:52 2016 -0500
+++ b/src/lib-sql/sql-api.h	Fri Jul 15 16:40:05 2016 -0500
@@ -24,6 +24,13 @@
 	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 @@
 
 /* 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. */