Mercurial > dovecot > original-hg > dovecot-1.2
changeset 4384:a8979ba36c74 HEAD
Fixes to handling database updates.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 16 Jun 2006 14:42:30 +0300 |
parents | dc1f912bbf10 |
children | 2c4a39afea07 |
files | src/lib-sql/driver-mysql.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-sql/driver-mysql.c Fri Jun 16 14:09:07 2006 +0300 +++ b/src/lib-sql/driver-mysql.c Fri Jun 16 14:42:30 2006 +0300 @@ -228,6 +228,12 @@ } t_pop(); +#ifdef CLIENT_MULTI_STATEMENTS + /* Updates require this because everything is committed in one large + SQL statement. */ + db->client_flags |= CLIENT_MULTI_STATEMENTS; +#endif + if (array_count(&db->connections) == 0) i_fatal("mysql: No hosts given in connect string"); } @@ -393,7 +399,7 @@ case 1: /* query ok */ result->result = mysql_store_result(conn->mysql); - if (result->result != NULL) + if (result->result != NULL || mysql_errno(conn->mysql) == 0) break; /* fallback */ case -1: @@ -422,11 +428,16 @@ { struct mysql_result *result = (struct mysql_result *)_result; + if (result->result == NULL) { + /* no results */ + return 0; + } + result->row = mysql_fetch_row(result->result); if (result->row != NULL) return 1; - return mysql_errno(result->conn->mysql) ? -1 : 0; + return mysql_errno(result->conn->mysql) != 0 ? -1 : 0; } static void driver_mysql_result_fetch_fields(struct mysql_result *result)