annotate src/lib-sql/sql-api.c @ 3919:b967ffb7e3a6 HEAD

SQLite support. Patch by Jakob Hirsch.
author Timo Sirainen <tss@iki.fi>
date Sun, 22 Jan 2006 14:09:11 +0200
parents 928229f8b3e6
children cbe5c6772e0d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 /* Copyright (c) 2004 Timo Sirainen */
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "sql-api-private.h"
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
6 struct sql_db *sql_db_drivers[] = {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
7 #ifdef HAVE_PGSQL
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
8 &driver_pgsql_db,
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
9 #endif
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
10 #ifdef HAVE_MYSQL
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
11 &driver_mysql_db,
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
12 #endif
3919
b967ffb7e3a6 SQLite support. Patch by Jakob Hirsch.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
13 #ifdef HAVE_SQLITE
b967ffb7e3a6 SQLite support. Patch by Jakob Hirsch.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
14 &driver_sqlite_db,
b967ffb7e3a6 SQLite support. Patch by Jakob Hirsch.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
15 #endif
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
16 NULL
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
17 };
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
18
2757
b0e039ad5717 warning fix when not compiled with any sql drivers
Timo Sirainen <tss@iki.fi>
parents: 2754
diff changeset
19 struct sql_db *sql_init(const char *db_driver,
b0e039ad5717 warning fix when not compiled with any sql drivers
Timo Sirainen <tss@iki.fi>
parents: 2754
diff changeset
20 const char *connect_string __attr_unused__)
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 {
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
22 int i;
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
23
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
24 for (i = 0; sql_db_drivers[i] != NULL; i++) {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
25 if (strcmp(db_driver, sql_db_drivers[i]->name) == 0)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
26 return sql_db_drivers[i]->init(connect_string);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
27 }
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 i_fatal("Unknown database driver '%s'", db_driver);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
32 void sql_deinit(struct sql_db **db)
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 {
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
34 (*db)->deinit(*db);
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
35 *db = NULL;
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37
3421
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
38 enum sql_db_flags sql_get_flags(struct sql_db *db)
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
39 {
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
40 return db->get_flags(db);
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
41 }
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
42
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
43 int sql_connect(struct sql_db *db)
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
44 {
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
45 return db->connect(db);
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
46 }
c624ffa9e6f0 Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents: 3163
diff changeset
47
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 void sql_exec(struct sql_db *db, const char *query)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 db->exec(db, query);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 void sql_query(struct sql_db *db, const char *query,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 sql_query_callback_t *callback, void *context)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 db->query(db, query, callback, context);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
59 struct sql_result *sql_query_s(struct sql_db *db, const char *query)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
60 {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
61 return db->query_s(db, query);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
62 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
63
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
64 void sql_result_free(struct sql_result *result)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
65 {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
66 result->free(result);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
67 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
68
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 int sql_result_next_row(struct sql_result *result)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 return result->next_row(result);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 unsigned int sql_result_get_fields_count(struct sql_result *result)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 return result->get_fields_count(result);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79 const char *sql_result_get_field_name(struct sql_result *result,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
80 unsigned int idx)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 return result->get_field_name(result, idx);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 int sql_result_find_field(struct sql_result *result, const char *field_name)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 return result->find_field(result, field_name);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 const char *sql_result_get_field_value(struct sql_result *result,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 unsigned int idx)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 return result->get_field_value(result, idx);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96 const char *sql_result_find_field_value(struct sql_result *result,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97 const char *field_name)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99 return result->find_field_value(result, field_name);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 const char *const *sql_result_get_values(struct sql_result *result)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 return result->get_values(result);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107 const char *sql_result_get_error(struct sql_result *result)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 return result->get_error(result);
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
112 static void
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
113 sql_result_not_connected_free(struct sql_result *result __attr_unused__)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
114 {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
115 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
116
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 static int
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 sql_result_not_connected_next_row(struct sql_result *result __attr_unused__)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 return -1;
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123 static const char *
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124 sql_result_not_connected_get_error(struct sql_result *result __attr_unused__)
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 return "Not connected to database";
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 }
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
129 struct sql_transaction_context *sql_transaction_begin(struct sql_db *db)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
130 {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
131 return db->transaction_begin(db);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
132 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
133
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
134 void sql_transaction_commit(struct sql_transaction_context **_ctx,
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
135 sql_commit_callback_t *callback, void *context)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
136 {
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
137 struct sql_transaction_context *ctx = *_ctx;
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
138
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
139 *_ctx = NULL;
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
140 ctx->db->transaction_commit(ctx, callback, context);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
141 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
142
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
143 int sql_transaction_commit_s(struct sql_transaction_context **_ctx,
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
144 const char **error_r)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
145 {
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
146 struct sql_transaction_context *ctx = *_ctx;
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
147
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
148 *_ctx = NULL;
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
149 return ctx->db->transaction_commit_s(ctx, error_r);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
150 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
151
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
152 void sql_transaction_rollback(struct sql_transaction_context **_ctx)
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
153 {
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
154 struct sql_transaction_context *ctx = *_ctx;
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
155
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3736
diff changeset
156 *_ctx = NULL;
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
157 ctx->db->transaction_rollback(ctx);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
158 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
159
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
160 void sql_update(struct sql_transaction_context *ctx, const char *query)
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
161 {
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
162 ctx->db->update(ctx, query);
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
163 }
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
164
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
165 struct sql_result sql_not_connected_result = {
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
166 NULL,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
167
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
168 sql_result_not_connected_free,
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
169 sql_result_not_connected_next_row,
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
170 NULL, NULL, NULL, NULL, NULL, NULL,
3736
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
171 sql_result_not_connected_get_error,
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
172
3dd0ab18d8da Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents: 3421
diff changeset
173 FALSE
2754
3c3ac12be307 Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
174 };