static void driver_mysql_query(struct sql_db *db, const char *query, sql_query_callback_t *callback, void *context) { struct sql_result *result; result = sql_query_s(db, query); result->callback = TRUE; callback(result, context); result->callback = FALSE; sql_result_unref(result); }
static int userdb_sql_iterate_deinit(struct userdb_iterate_context *_ctx) { struct sql_userdb_iterate_context *ctx = (struct sql_userdb_iterate_context *)_ctx; int ret = _ctx->failed ? -1 : 0; auth_request_unref(&_ctx->auth_request); if (ctx->result == NULL) { /* sql query hasn't finished yet */ ctx->freed = TRUE; } else { if (ctx->result != NULL) sql_result_unref(ctx->result); i_free(ctx); } return ret; }
transaction_send_query(struct mysql_transaction_context *ctx, const char *query, unsigned int *affected_rows_r) { struct sql_result *_result; int ret = 0; if (ctx->failed) return -1; _result = sql_query_s(ctx->ctx.db, query); if (sql_result_next_row(_result) < 0) { ctx->error = sql_result_get_error(_result); ctx->failed = TRUE; ret = -1; } else if (affected_rows_r != NULL) { struct mysql_result *result = (struct mysql_result *)_result; i_assert(result->affected_rows != (my_ulonglong)-1); *affected_rows_r = result->affected_rows; } sql_result_unref(_result); return ret; }