Mercurial > dovecot > core-2.2
annotate src/lib-sql/sql-api.h @ 22614:cf66220d281e
doveadm proxy: Don't crash if remote doesn't support log proxying
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sat, 14 Oct 2017 12:54:18 +0300 |
parents | 7d189977dfe3 |
children | a8220182eac6 |
rev | line source |
---|---|
6410
e4eb71ae8e96
Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents:
5496
diff
changeset
|
1 #ifndef SQL_API_H |
e4eb71ae8e96
Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents:
5496
diff
changeset
|
2 #define SQL_API_H |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
4 /* This SQL API is designed to work asynchronously. The underlying drivers |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
5 however may not. */ |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
6 |
3162
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
7 enum sql_db_flags { |
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
8 /* Set if queries are not executed asynchronously */ |
11261
1c8cc349ef55
lib-sql: Use generic sql connection pooling code for mysql/pgsql.
Timo Sirainen <tss@iki.fi>
parents:
9888
diff
changeset
|
9 SQL_DB_FLAG_BLOCKING = 0x01, |
1c8cc349ef55
lib-sql: Use generic sql connection pooling code for mysql/pgsql.
Timo Sirainen <tss@iki.fi>
parents:
9888
diff
changeset
|
10 /* Set if database wants to use connection pooling */ |
22514
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
11 SQL_DB_FLAG_POOLED = 0x02, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
12 /* Prepared statements are supported by the database. If they aren't, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
13 the functions can still be used, but they're just internally |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
14 convered into regular statements. */ |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
15 SQL_DB_FLAG_PREP_STATEMENTS = 0x04, |
3162
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
16 }; |
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
17 |
5496
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
18 enum sql_field_type { |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
19 SQL_TYPE_STR, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
20 SQL_TYPE_UINT, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
21 SQL_TYPE_ULLONG, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
22 SQL_TYPE_BOOL |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
23 }; |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
24 |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
25 struct sql_field_def { |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
26 enum sql_field_type type; |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
27 const char *name; |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
28 size_t offset; |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
29 }; |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
30 |
20526
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
31 enum sql_result_error_type { |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
32 SQL_RESULT_ERROR_TYPE_UNKNOWN = 0, |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
33 /* It's unknown whether write succeeded or not. This could be due to |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
34 a timeout or a disconnection from server. */ |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
35 SQL_RESULT_ERROR_TYPE_WRITE_UNCERTAIN |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
36 }; |
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
37 |
22354
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
38 enum sql_result_next { |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
39 /* Row was returned */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
40 SQL_RESULT_NEXT_OK = 1, |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
41 /* There are no more rows */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
42 SQL_RESULT_NEXT_LAST = 0, |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
43 /* Error occurred - see sql_result_get_error*() */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
44 SQL_RESULT_NEXT_ERROR = -1, |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
45 /* There are more results - call sql_result_more() */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
46 SQL_RESULT_NEXT_MORE = -99 |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
47 }; |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
48 |
5496
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
49 #define SQL_DEF_STRUCT(name, struct_name, type, c_type) \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
50 { (type) + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
51 ((struct struct_name *)0)->name, c_type), \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
52 #name, offsetof(struct struct_name, name) } |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
53 |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
54 #define SQL_DEF_STRUCT_STR(name, struct_name) \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
55 SQL_DEF_STRUCT(name, struct_name, SQL_TYPE_STR, const char *) |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
56 #define SQL_DEF_STRUCT_UINT(name, struct_name) \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
57 SQL_DEF_STRUCT(name, struct_name, SQL_TYPE_UINT, unsigned int) |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
58 #define SQL_DEF_STRUCT_ULLONG(name, struct_name) \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
59 SQL_DEF_STRUCT(name, struct_name, SQL_TYPE_ULLONG, unsigned long long) |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
60 #define SQL_DEF_STRUCT_BOOL(name, struct_name) \ |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
61 SQL_DEF_STRUCT(name, struct_name, SQL_TYPE_BOOL, bool) |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
62 |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 struct sql_db; |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 struct sql_result; |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 |
20528
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
66 struct sql_commit_result { |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
67 const char *error; |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
68 enum sql_result_error_type error_type; |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
69 }; |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
70 |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
71 typedef void sql_query_callback_t(struct sql_result *result, void *context); |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
72 typedef void sql_commit_callback_t(const char *error, void *context); |
20528
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
73 typedef void sql_commit2_callback_t(const struct sql_commit_result *result, void *context); |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
74 |
3943
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
75 void sql_drivers_init(void); |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
76 void sql_drivers_deinit(void); |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
77 |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
78 /* register all built-in SQL drivers */ |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
79 void sql_drivers_register_all(void); |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
80 |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
81 void sql_driver_register(const struct sql_db *driver); |
cbe5c6772e0d
Added support for dynamically building SQL drivers.
Timo Sirainen <tss@iki.fi>
parents:
3879
diff
changeset
|
82 void sql_driver_unregister(const struct sql_db *driver); |
2754
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 /* Initialize database connections. db_driver is the database driver name, |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
85 eg. "mysql" or "pgsql". connect_string is driver-specific. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
86 struct sql_db *sql_init(const char *db_driver, const char *connect_string); |
3879
928229f8b3e6
deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents:
3736
diff
changeset
|
87 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
|
88 |
3162
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
89 /* Returns SQL database state flags. */ |
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
90 enum sql_db_flags sql_get_flags(struct sql_db *db); |
5d6787582410
Added sql_get_flags() function, currently returning only
Timo Sirainen <tss@iki.fi>
parents:
2754
diff
changeset
|
91 |
3421
c624ffa9e6f0
Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents:
3162
diff
changeset
|
92 /* Explicitly connect to the database. It's not required to call this function |
c624ffa9e6f0
Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents:
3162
diff
changeset
|
93 though. Returns -1 if we're not connected, 0 if we started connecting or |
c624ffa9e6f0
Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents:
3162
diff
changeset
|
94 1 if we are fully connected now. */ |
c624ffa9e6f0
Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents:
3162
diff
changeset
|
95 int sql_connect(struct sql_db *db); |
12033
b88b207b79b2
lib-sql: sql_disconnect() now aborts all pending requests.
Timo Sirainen <tss@iki.fi>
parents:
11261
diff
changeset
|
96 /* Explicitly disconnect from database and abort pending auth requests. */ |
11261
1c8cc349ef55
lib-sql: Use generic sql connection pooling code for mysql/pgsql.
Timo Sirainen <tss@iki.fi>
parents:
9888
diff
changeset
|
97 void sql_disconnect(struct sql_db *db); |
3421
c624ffa9e6f0
Added sql_connect() to do explicit connecting. sql_init() no longer does.
Timo Sirainen <tss@iki.fi>
parents:
3162
diff
changeset
|
98 |
4294 | 99 /* Escape the given string if needed and return it. */ |
4458
3e196acd60b7
sql_escape_string() should return const char *, not char *.
Timo Sirainen <tss@iki.fi>
parents:
4294
diff
changeset
|
100 const char *sql_escape_string(struct sql_db *db, const char *string); |
19072
113f4e32cb19
lib-sql: Implemented sql_escape_blob()
Timo Sirainen <tss@iki.fi>
parents:
14921
diff
changeset
|
101 /* Escape the given data as a string. */ |
113f4e32cb19
lib-sql: Implemented sql_escape_blob()
Timo Sirainen <tss@iki.fi>
parents:
14921
diff
changeset
|
102 const char *sql_escape_blob(struct sql_db *db, |
113f4e32cb19
lib-sql: Implemented sql_escape_blob()
Timo Sirainen <tss@iki.fi>
parents:
14921
diff
changeset
|
103 const unsigned char *data, size_t size); |
4294 | 104 |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
105 /* Execute SQL query without waiting for results. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
106 void sql_exec(struct sql_db *db, const char *query); |
5496
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
107 /* Execute SQL query and return result in callback. If fields list is given, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
108 the returned fields are validated to be of correct type, and you can use |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
109 sql_result_next_row_get() */ |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
110 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
|
111 sql_query_callback_t *callback, void *context); |
14921
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
112 #define sql_query(db, query, callback, context) \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
113 sql_query(db, query + \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
114 CALLBACK_TYPECHECK(callback, void (*)( \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
115 struct sql_result *, typeof(context))), \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
116 (sql_query_callback_t *)callback, context) |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
117 /* Execute blocking SQL query and return result. */ |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
118 struct sql_result *sql_query_s(struct sql_db *db, const char *query); |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
119 |
22514
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
120 struct sql_prepared_statement * |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
121 sql_prepared_statement_init(struct sql_db *db, const char *query_template); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
122 void sql_prepared_statement_deinit(struct sql_prepared_statement **prep_stmt); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
123 |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
124 struct sql_statement * |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
125 sql_statement_init(struct sql_db *db, const char *query_template); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
126 struct sql_statement * |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
127 sql_statement_init_prepared(struct sql_prepared_statement *prep_stmt); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
128 void sql_statement_abort(struct sql_statement **stmt); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
129 void sql_statement_set_timestamp(struct sql_statement *stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
130 const struct timespec *ts); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
131 void sql_statement_bind_str(struct sql_statement *stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
132 unsigned int column_idx, const char *value); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
133 void sql_statement_bind_binary(struct sql_statement *stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
134 unsigned int column_idx, const void *value, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
135 size_t value_size); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
136 void sql_statement_bind_int64(struct sql_statement *stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
137 unsigned int column_idx, int64_t value); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
138 void sql_statement_query(struct sql_statement **stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
139 sql_query_callback_t *callback, void *context); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
140 #define sql_statement_query(stmt, callback, context) \ |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
141 sql_statement_query(stmt, \ |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
142 (sql_query_callback_t *)callback, context + \ |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
143 CALLBACK_TYPECHECK(callback, void (*)( \ |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
144 struct sql_result *, typeof(context)))) |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
145 struct sql_result *sql_statement_query_s(struct sql_statement **stmt); |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
146 |
5496
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
147 void sql_result_setup_fetch(struct sql_result *result, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
148 const struct sql_field_def *fields, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
149 void *dest, size_t dest_size); |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
150 |
22354
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
151 /* Go to next row. See enum sql_result_next. */ |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
152 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
|
153 |
22354
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
154 /* If sql_result_next_row() returned SQL_RESULT_NEXT_MORE, this can be called |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
155 to continue returning more results. The result is freed with this call, so |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
156 it must not be accesed anymore until the callback is finished. */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
157 void sql_result_more(struct sql_result **result, |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
158 sql_query_callback_t *callback, void *context); |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
159 #define sql_result_more(result, callback, context) \ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
160 sql_result_more(result + \ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
161 CALLBACK_TYPECHECK(callback, void (*)( \ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
162 struct sql_result *, typeof(context))), \ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
163 (sql_query_callback_t *)callback, context) |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
164 /* Synchronous version of sql_result_more(). The result will be replaced with |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
165 the new result. */ |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
166 void sql_result_more_s(struct sql_result **result); |
b9a2a6135419
lib-sql: Add API support for asynchronously iterating over rows.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20528
diff
changeset
|
167 |
9270
f9ebd72a73e8
SQL API change: SQL results can be now refed/unrefed.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
168 void sql_result_ref(struct sql_result *result); |
f9ebd72a73e8
SQL API change: SQL results can be now refed/unrefed.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
169 /* Needs to be called only with sql_query_s() or when result has been |
f9ebd72a73e8
SQL API change: SQL results can be now refed/unrefed.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
170 explicitly referenced. */ |
f9ebd72a73e8
SQL API change: SQL results can be now refed/unrefed.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
171 void sql_result_unref(struct sql_result *result); |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
172 |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
173 /* Return number of fields in result. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
174 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
|
175 /* Return name of the given field index. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
176 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
|
177 unsigned int idx); |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
178 /* Return field index for given name, or -1 if not found. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
179 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
|
180 |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
181 /* Returns value of given field as string. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
182 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
|
183 unsigned int idx); |
5496
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
184 const unsigned char * |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
185 sql_result_get_field_value_binary(struct sql_result *result, |
72ee0521dfaf
Added sql_result_setup_fetch() which makes it easier to fetch rows into
Timo Sirainen <tss@iki.fi>
parents:
4907
diff
changeset
|
186 unsigned int idx, size_t *size_r); |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
187 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
|
188 const char *field_name); |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
189 /* Return all values of current row. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
190 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
|
191 |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
192 /* Return last error message in result. */ |
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
193 const char *sql_result_get_error(struct sql_result *result); |
20526
9565305a8512
lib-sql: Added sql_result_get_error_type().
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19072
diff
changeset
|
194 enum sql_result_error_type sql_result_get_error_type(struct sql_result *result); |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
195 |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
196 /* Begin a new transaction. Currently you're limited to only one open |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
197 transaction at a time. */ |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
198 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:
3520
diff
changeset
|
199 /* Commit transaction. */ |
3879
928229f8b3e6
deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents:
3736
diff
changeset
|
200 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:
3520
diff
changeset
|
201 sql_commit_callback_t *callback, void *context); |
14921
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
202 #define sql_transaction_commit(ctx, callback, context) \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
203 sql_transaction_commit(ctx + \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
204 CALLBACK_TYPECHECK(callback, void (*)( \ |
d3db2ba15d00
Removed CONTEXT_TYPE_SAFETY macro and reimplemented its functionality better.
Timo Sirainen <tss@iki.fi>
parents:
12033
diff
changeset
|
205 const char *, typeof(context))), \ |
4907
5b4c9b20eba0
Replaced void *context from a lot of callbacks with the actual context
Timo Sirainen <tss@iki.fi>
parents:
4906
diff
changeset
|
206 (sql_commit_callback_t *)callback, context) |
20528
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
207 void sql_transaction_commit2(struct sql_transaction_context **ctx, |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
208 sql_commit2_callback_t *callback, void *context); |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
209 #define sql_transaction_commit2(ctx, callback, context) \ |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
210 sql_transaction_commit2(ctx + \ |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
211 CALLBACK_TYPECHECK(callback, void (*)( \ |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
212 const struct sql_commit_result *, typeof(context))), \ |
b885fee56a82
lib-sql: Added sql_transaction_commit2()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
20526
diff
changeset
|
213 (sql_commit2_callback_t *)callback, context) |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
214 /* Synchronous commit. Returns 0 if ok, -1 if error. */ |
3879
928229f8b3e6
deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents:
3736
diff
changeset
|
215 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:
3520
diff
changeset
|
216 const char **error_r); |
3879
928229f8b3e6
deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents:
3736
diff
changeset
|
217 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:
3520
diff
changeset
|
218 |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
219 /* Execute query in given transaction. */ |
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
220 void sql_update(struct sql_transaction_context *ctx, const char *query); |
22514
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
221 void sql_update_stmt(struct sql_transaction_context *ctx, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
222 struct sql_statement **stmt); |
9888
551c273f4844
lib-sql: Added sql_update_get_rows().
Timo Sirainen <tss@iki.fi>
parents:
9270
diff
changeset
|
223 /* Save the number of rows updated by this query. The value is set before |
551c273f4844
lib-sql: Added sql_update_get_rows().
Timo Sirainen <tss@iki.fi>
parents:
9270
diff
changeset
|
224 commit callback is called. */ |
551c273f4844
lib-sql: Added sql_update_get_rows().
Timo Sirainen <tss@iki.fi>
parents:
9270
diff
changeset
|
225 void sql_update_get_rows(struct sql_transaction_context *ctx, const char *query, |
551c273f4844
lib-sql: Added sql_update_get_rows().
Timo Sirainen <tss@iki.fi>
parents:
9270
diff
changeset
|
226 unsigned int *affected_rows); |
22514
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
227 void sql_update_stmt_get_rows(struct sql_transaction_context *ctx, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
228 struct sql_statement **stmt, |
7d189977dfe3
lib-sql: Add support for prepared SQL statements.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22354
diff
changeset
|
229 unsigned int *affected_rows); |
3736
3dd0ab18d8da
Added support for transactions and synchronous SQL queries.
Timo Sirainen <tss@iki.fi>
parents:
3520
diff
changeset
|
230 |
2754
3c3ac12be307
Created generic asynchronous SQL API and implemented MySQL and PostgreSQL
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
231 #endif |