diff src/lib-sql/sql-api-private.h @ 3736:3dd0ab18d8da HEAD

Added support for transactions and synchronous SQL queries.
author Timo Sirainen <tss@iki.fi>
date Sat, 10 Dec 2005 20:57:11 +0200
parents c624ffa9e6f0
children b967ffb7e3a6
line wrap: on
line diff
--- a/src/lib-sql/sql-api-private.h	Sat Dec 10 20:56:02 2005 +0200
+++ b/src/lib-sql/sql-api-private.h	Sat Dec 10 20:57:11 2005 +0200
@@ -4,6 +4,8 @@
 #include "sql-api.h"
 
 struct sql_db {
+	const char *name;
+
 	struct sql_db *(*init)(const char *connect_string);
 	void (*deinit)(struct sql_db *db);
 
@@ -13,11 +15,23 @@
 	void (*exec)(struct sql_db *db, const char *query);
 	void (*query)(struct sql_db *db, const char *query,
 		      sql_query_callback_t *callback, void *context);
+	struct sql_result *(*query_s)(struct sql_db *db, const char *query);
+
+	struct sql_transaction_context *(*transaction_begin)(struct sql_db *db);
+	void (*transaction_commit)(struct sql_transaction_context *ctx,
+				   sql_commit_callback_t *callback,
+				   void *context);
+	int (*transaction_commit_s)(struct sql_transaction_context *ctx,
+				    const char **error_r);
+	void (*transaction_rollback)(struct sql_transaction_context *ctx);
+
+	void (*update)(struct sql_transaction_context *ctx, const char *query);
 };
 
 struct sql_result {
 	struct sql_db *db;
 
+	void (*free)(struct sql_result *result);
 	int (*next_row)(struct sql_result *result);
 
 	unsigned int (*get_fields_count)(struct sql_result *result);
@@ -32,6 +46,12 @@
 	const char *const *(*get_values)(struct sql_result *result);
 
 	const char *(*get_error)(struct sql_result *result);
+
+	unsigned int callback:1;
+};
+
+struct sql_transaction_context {
+	struct sql_db *db;
 };
 
 extern struct sql_db driver_mysql_db;