author | Tero Marttila <terom@fixme.fi> |
Sat, 13 Dec 2008 20:58:27 +0200 | |
branch | new-evsql |
changeset 55 | 0b92d553400a |
parent 54 | 7dc8ff496da1 |
permissions | -rw-r--r-- |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
#ifndef EVSQL_H |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
#define EVSQL_H |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
4 |
/** |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
5 |
* @file src/evsql.h |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
6 |
* |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
7 |
* A SQL library designed for use with libevent and PostgreSQL's libpq. Provides support for queueing non-transactional |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
8 |
* requests, transaction support, parametrized queries and result iteration. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
9 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
10 |
* Currently, the API does not expose the underlying libpq data structures, but since it is currently the only |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
11 |
* underlying implementation, there is no guarantee that the same API will actually work with other databases' interface |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
12 |
* libraries... |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
13 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
14 |
* The order of function calls and callbacks goes something like this: |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
15 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
16 |
* - evsql_new_pq() |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
17 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
18 |
* - evsql_trans() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
19 |
* - evsql_trans_abort() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
20 |
* - evsql_trans_error_cb() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
21 |
* - evsql_trans_ready_cb() |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
22 |
* |
55 | 23 |
* - evsql_query(), \ref evsql_param_ + evsql_query_params(), evsql_query_exec() |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
24 |
* - evsql_query_abort() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
25 |
* - evsql_query_cb() |
55 | 26 |
* - \ref evsql_result_ |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
27 |
* - evsql_result_free() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
28 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
29 |
* - evsql_trans_commit() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
30 |
* - evsql_trans_done_cb() |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
31 |
* |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
*/ |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
34 |
/** |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
35 |
* System includes |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
36 |
*/ |
28
e944453ca924
split off dbfs components into a separate dir, improve dirop docs, error handling, etc
Tero Marttila <terom@fixme.fi>
parents:
27
diff
changeset
|
37 |
#include <stdint.h> |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
38 |
#include <stdbool.h> |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
#include <event2/event.h> |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
41 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
42 |
* For err_t. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
43 |
*/ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
44 |
#include "lib/err.h" |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
45 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
46 |
/** |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
47 |
* @struct evsql |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
48 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
49 |
* The generic session handle used to manage a single "database connector" with multiple queries/transactions. |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
50 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
51 |
* @see \ref evsql_ |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
*/ |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
struct evsql; |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
54 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
55 |
/** |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
56 |
* @struct evsql_trans |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
57 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
58 |
* Opaque transaction handle returned by evsql_trans() and used for the \ref evsql_query_ functions |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
59 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
60 |
* @see \ref evsql_trans_ |
43 | 61 |
*/ |
62 |
struct evsql_trans; |
|
63 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
64 |
/** |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
65 |
* @struct evsql_query |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
66 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
67 |
* Opaque query handle returned by the \ref evsql_query_ functions and used for evsql_query_abort() |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
68 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
69 |
* @see \ref evsql_query_ |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
70 |
*/ |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
struct evsql_query; |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
73 |
/** |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
74 |
* @struct evsql_result |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
75 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
76 |
* Opaque result handle received by evsql_query_cb(), and used with the \ref evsql_result_ functions |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
77 |
* |
55 | 78 |
* @see evsql_query_cb |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
79 |
* @see \ref evsql_result_ |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
80 |
*/ |
43 | 81 |
struct evsql_result; |
82 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
83 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
84 |
* Various transaction isolation levels for conveniance |
53 | 85 |
* |
86 |
* @see evsql_trans |
|
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
87 |
*/ |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
88 |
enum evsql_trans_type { |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
89 |
EVSQL_TRANS_DEFAULT, |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
90 |
EVSQL_TRANS_SERIALIZABLE, |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
91 |
EVSQL_TRANS_REPEATABLE_READ, |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
92 |
EVSQL_TRANS_READ_COMMITTED, |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
93 |
EVSQL_TRANS_READ_UNCOMMITTED, |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
94 |
}; |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
95 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
96 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
97 |
* An item can be in different formats, the classical text-based format (i.e. snprintf "1234") or a more low-level |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
98 |
* binary format (i.e uint16_t 0x04F9 in network-byte order). |
24 | 99 |
*/ |
43 | 100 |
enum evsql_item_format { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
101 |
/** Format values as text strings */ |
24 | 102 |
EVSQL_FMT_TEXT, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
103 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
104 |
/** Type-specific binary encoding */ |
24 | 105 |
EVSQL_FMT_BINARY, |
106 |
}; |
|
107 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
108 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
109 |
* An item has a specific type, these correspond somewhat to the native database types. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
110 |
*/ |
43 | 111 |
enum evsql_item_type { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
112 |
/** End marker, zero */ |
43 | 113 |
EVSQL_TYPE_INVALID, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
114 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
115 |
/** A SQL NULL */ |
43 | 116 |
EVSQL_TYPE_NULL_, |
31 | 117 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
118 |
/** A `struct evsql_item_binary` */ |
43 | 119 |
EVSQL_TYPE_BINARY, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
120 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
121 |
/** A NUL-terminated char* */ |
43 | 122 |
EVSQL_TYPE_STRING, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
123 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
124 |
/** A uint16_t value */ |
43 | 125 |
EVSQL_TYPE_UINT16, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
126 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
127 |
/** A uint32_t value */ |
43 | 128 |
EVSQL_TYPE_UINT32, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
129 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
130 |
/** A uint64_t value */ |
43 | 131 |
EVSQL_TYPE_UINT64, |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
132 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
133 |
EVSQL_TYPE_MAX |
43 | 134 |
}; |
135 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
136 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
137 |
* Value for use with EVSQL_TYPE_BINARY, this just a non-NUL-terminated char* and an explicit length |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
138 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
139 |
struct evsql_item_binary { |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
140 |
/** The binary data */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
141 |
const char *ptr; |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
142 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
143 |
/** Number of bytes pointed to by ptr */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
144 |
size_t len; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
145 |
}; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
146 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
147 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
148 |
* Metadata about the format and type of an item, this does not hold any actual value. |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
149 |
*/ |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
150 |
struct evsql_item_info { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
151 |
/** The format */ |
43 | 152 |
enum evsql_item_format format; |
153 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
154 |
/** The type type */ |
43 | 155 |
enum evsql_item_type type; |
156 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
157 |
/** Various flags */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
158 |
struct evsql_item_flags { |
55 | 159 |
/** The value may be NULL @see evsql_result_next */ |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
160 |
bool null_ok : 1; |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
161 |
} flags; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
162 |
}; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
163 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
164 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
165 |
* An union to provide storage for the values of small types |
53 | 166 |
* |
167 |
* @see evsql_item |
|
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
168 |
*/ |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
169 |
union evsql_item_value { |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
170 |
/** 16-bit unsigned integer */ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
171 |
uint16_t uint16; |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
172 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
173 |
/** 32-bit unsigned integer */ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
174 |
uint32_t uint32; |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
175 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
176 |
/** 64-bit unsigned integer */ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
177 |
uint64_t uint64; |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
178 |
}; |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
179 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
180 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
181 |
* A generic structure containing the type and value of a query parameter or a result field. |
53 | 182 |
* |
183 |
* @see evsql_query_info |
|
184 |
* @see evsql_query_params |
|
185 |
* @see evsql_result_info |
|
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
186 |
*/ |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
187 |
struct evsql_item { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
188 |
/** The "header" containing the type and format */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
189 |
struct evsql_item_info info; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
190 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
191 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
192 |
* Pointer to the raw databytes. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
193 |
* Set to NULL for SQL NULLs, otherwise &value or an external buf |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
194 |
*/ |
43 | 195 |
const char *bytes; |
196 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
197 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
198 |
* Size of the byte array pointed to by bytes, zero for EVSQL_FMT_TEXT data. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
199 |
*/ |
43 | 200 |
size_t length; |
201 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
202 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
203 |
* Inline storage for small values |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
204 |
*/ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
205 |
union evsql_item_value value; |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
206 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
207 |
/** Internal flags */ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
208 |
struct { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
209 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
210 |
* The item has a value stored in `value` |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
211 |
*/ |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
212 |
bool has_value : 1; |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
213 |
} flags; |
24 | 214 |
}; |
215 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
216 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
217 |
* Query meta-info, similar to a prepared statement. |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
218 |
* |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
219 |
* Contains the literal SQL query and the types of the parameters, but no more. |
53 | 220 |
* |
221 |
* @see evsql_query_exec |
|
23
1dee73ae4ad0
evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents:
21
diff
changeset
|
222 |
*/ |
43 | 223 |
struct evsql_query_info { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
224 |
/** The SQL query itself */ |
43 | 225 |
const char *sql; |
23
1dee73ae4ad0
evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents:
21
diff
changeset
|
226 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
227 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
228 |
* A variable-length array of the item_info parameters, terminated by an EVSQL_TYPE_INVALID entry. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
229 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
230 |
struct evsql_item_info params[]; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
231 |
}; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
232 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
233 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
234 |
* Contains the query parameter types and their actual values |
53 | 235 |
* |
236 |
* @see evsql_query_params |
|
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
237 |
*/ |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
238 |
struct evsql_query_params { |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
239 |
/** Requested result format for this query. XXX: move elsewhere */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
240 |
enum evsql_item_format result_format; |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
241 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
242 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
243 |
* A variable-length array of the item parameter-values, terminated by an EVSQL_TYPE_INVALID entry. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
244 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
245 |
struct evsql_item list[]; |
23
1dee73ae4ad0
evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents:
21
diff
changeset
|
246 |
}; |
1dee73ae4ad0
evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents:
21
diff
changeset
|
247 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
248 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
249 |
* Result layout metadata. This contains the stucture needed to decode result rows. |
53 | 250 |
* |
251 |
* @see evsql_result_begin |
|
43 | 252 |
*/ |
253 |
struct evsql_result_info { |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
254 |
/** XXX: make up something useful to stick here */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
255 |
int _unused; |
43 | 256 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
257 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
258 |
* A variable-length array of the item_info column types. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
259 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
260 |
struct evsql_item_info columns[]; |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
261 |
}; |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
262 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
263 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
264 |
* Magic macros for defining param/result info -lists |
53 | 265 |
* |
266 |
* @code |
|
267 |
* static struct evsql_query_params params = EVSQL_PARAMS(EVSQL_FMT_BINARY) { |
|
268 |
* EVSQL_PARAM( UINT32 ), |
|
269 |
* ..., |
|
270 |
* |
|
271 |
* EVSQL_PARAMS_END |
|
272 |
* }; |
|
273 |
* @endcode |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
274 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
275 |
* @name EVSQL_TYPE/PARAM_* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
276 |
* @{ |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
277 |
*/ |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
278 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
279 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
280 |
* A `struct evsql_item_info` initializer, using FMT_BINARY and the given EVSQL_TYPE_ -suffix. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
281 |
* |
53 | 282 |
* @param typenam the suffix of an evsql_item_type name |
283 |
* |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
284 |
* @see struct evsql_item_info |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
285 |
* @see enum evsql_item_type |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
286 |
*/ |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
287 |
#define EVSQL_TYPE(typenam) { EVSQL_FMT_BINARY, EVSQL_TYPE_ ## typenam } |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
288 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
289 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
290 |
* End marker for a `struct evsql_item_info` array. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
291 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
292 |
* @see struct evsql_item_info |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
293 |
*/ |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
294 |
#define EVSQL_TYPE_END { EVSQL_FMT_BINARY, EVSQL_TYPE_INVALID } |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
295 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
296 |
/** |
53 | 297 |
* Initializer block for an evsql_query_params struct |
48
8b019d191353
update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents:
45
diff
changeset
|
298 |
*/ |
8b019d191353
update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents:
45
diff
changeset
|
299 |
#define EVSQL_PARAMS(result_fmt) { result_fmt, |
53 | 300 |
|
301 |
/** |
|
302 |
* An evsql_item initializer |
|
303 |
*/ |
|
50 | 304 |
#define EVSQL_PARAM(typenam) { EVSQL_TYPE(typenam) } |
53 | 305 |
|
306 |
/** |
|
307 |
* Include the ending item and terminate the pseudo-block started using #EVSQL_PARAMS |
|
308 |
*/ |
|
50 | 309 |
#define EVSQL_PARAMS_END { EVSQL_TYPE_END } \ |
48
8b019d191353
update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents:
45
diff
changeset
|
310 |
} // <<< |
8b019d191353
update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents:
45
diff
changeset
|
311 |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
312 |
// @} |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
313 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
314 |
/** |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
315 |
* Callback definitions |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
316 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
317 |
* @name evsql_*_cb |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
318 |
* @{ |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
319 |
*/ |
50 | 320 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
321 |
/** |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
322 |
* Callback for handling query results. |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
323 |
* |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
324 |
* The query has completed, either succesfully or unsuccesfully. |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
325 |
* |
55 | 326 |
* Use the \ref evsql_result_ functions to manipulate the results, and call evsql_result_free() (or equivalent) once done. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
327 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
328 |
* @param res The result handle that must be result_free'd after use |
55 | 329 |
* @param arg The void* passed to \ref evsql_query_ |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
330 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
331 |
* @see evsql_query |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
332 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
333 |
typedef void (*evsql_query_cb)(struct evsql_result *res, void *arg); |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
334 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
335 |
/** |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
336 |
* Callback for handling global-level errors. |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
337 |
* |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
338 |
* The evsql is not useable anymore. |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
339 |
* |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
340 |
* XXX: this is not actually called yet, as no retry logic is implemented, so an evsql itself never fails. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
341 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
342 |
* @see evsql_new_pq |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
343 |
*/ |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
344 |
typedef void (*evsql_error_cb)(struct evsql *evsql, void *arg); |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
345 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
346 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
347 |
* Callback for handling transaction-level errors. This may be called at any time during a transaction's lifetime, |
55 | 348 |
* including from within the \ref evsql_query_ functions (but not always). |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
349 |
* |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
350 |
* The transaction is not useable anymore. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
351 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
352 |
* @param trans the transaction in question |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
353 |
* @param arg the void* passed to evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
354 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
355 |
* @see evsql_trans |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
356 |
*/ |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
357 |
typedef void (*evsql_trans_error_cb)(struct evsql_trans *trans, void *arg); |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
358 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
359 |
/** |
55 | 360 |
* Callback for handling evsql_trans/evsql_query_abort completion. The transaction is ready for use with \ref evsql_query_. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
361 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
362 |
* @param trans the transaction in question |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
363 |
* @param arg the void* passed to evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
364 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
365 |
* @see evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
366 |
* @see evsql_query_abort |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
367 |
*/ |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
368 |
typedef void (*evsql_trans_ready_cb)(struct evsql_trans *trans, void *arg); |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
369 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
370 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
371 |
* Callback for handling evsql_trans_commit completion. The transaction was commited, and should not be used anymore. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
372 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
373 |
* @param trans the transaction in question |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
374 |
* @param arg the void* passed to evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
375 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
376 |
* @see evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
377 |
* @see evsql_trans_commit |
26
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
378 |
*/ |
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
379 |
typedef void (*evsql_trans_done_cb)(struct evsql_trans *trans, void *arg); |
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
380 |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
381 |
// @} |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
382 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
383 |
/** |
53 | 384 |
* Session functions |
385 |
* |
|
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
386 |
* @defgroup evsql_* Session interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
387 |
* @see evsql.h |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
388 |
* @{ |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
389 |
*/ |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
390 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
391 |
/** |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
392 |
* Session creation functions |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
393 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
394 |
* @defgroup evsql_new_* Session creation interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
395 |
* @see evsql.h |
53 | 396 |
* @{ |
397 |
*/ |
|
398 |
||
399 |
/** |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
400 |
* Create a new PostgreSQL/libpq (evpq) -based evsql using the given conninfo. |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
401 |
* |
55 | 402 |
* The given \a pq_conninfo pointer must stay valid for the duration of the evsql's lifetime. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
403 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
404 |
* See the libpq reference manual for the syntax of pq_conninfo |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
405 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
406 |
* @param ev_base the libevent base to use |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
407 |
* @param pq_conninfo the libpq connection information |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
408 |
* @param error_fn XXX: not used, may be NULL |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
409 |
* @param cb_arg: XXX: not used, argument for error_fn |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
410 |
* @return the evsql context handle for use with other functions |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
411 |
*/ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
412 |
struct evsql *evsql_new_pq (struct event_base *ev_base, const char *pq_conninfo, |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
413 |
evsql_error_cb error_fn, |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
414 |
void *cb_arg |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
415 |
); |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
416 |
|
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
417 |
// @} |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
418 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
419 |
/** |
53 | 420 |
* Close a connection. Callbacks for waiting queries will not be run. |
421 |
* |
|
422 |
* XXX: not implemented yet. |
|
423 |
* |
|
55 | 424 |
* @param evsql the context handle from \ref evsql_new_ |
53 | 425 |
*/ |
426 |
void evsql_close (struct evsql *evsql); |
|
427 |
||
428 |
// @} |
|
429 |
||
430 |
/** |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
431 |
* Query API |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
432 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
433 |
* @defgroup evsql_query_* Query interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
434 |
* @see evsql.h |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
435 |
* @{ |
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
436 |
*/ |
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
437 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
438 |
/** |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
439 |
* Queue the given query for execution. |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
440 |
* |
55 | 441 |
* If \a trans is given (i.e. not NULL), then the transaction must be idle, and the query will be executed in that |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
442 |
* transaction's context. Otherwise, the query will be executed without a transaction using an idle connection, or |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
443 |
* enqueued for later execution. |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
444 |
* |
55 | 445 |
* Once the query is complete (got a result, got an error, the connection failed), then \a query_fn will be called. |
446 |
* The callback can use the \ref evsql_result_ functions to manipulate the query results. |
|
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
447 |
* |
55 | 448 |
* The returned evsql_query handle can be passed to evsql_query_abort at any point before \a query_fn being called. |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
449 |
* |
55 | 450 |
* @param evsql the context handle from \ref evsql_new_ |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
451 |
* @param trans the optional transaction handle from evsql_trans |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
452 |
* @param command the raw SQL command itself |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
453 |
* @param query_fn the evsql_query_cb() to call once the query is complete |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
454 |
* @param cb_arg the void* passed to the above |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
455 |
* @return the evsql_query handle that can be used to abort the query |
23
1dee73ae4ad0
evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents:
21
diff
changeset
|
456 |
*/ |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
457 |
struct evsql_query *evsql_query (struct evsql *evsql, struct evsql_trans *trans, const char *command, evsql_query_cb query_fn, void *cb_arg); |
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
458 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
459 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
460 |
* Execute the given SQL query using the list of parameter types/values given via evsql_query_params. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
461 |
* |
55 | 462 |
* Use the EVSQL_PARAMS macros to declare \a params, and the \ref evsql_param_ functions to populate the values. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
463 |
* |
55 | 464 |
* See evsql_query() for more info about behaviour. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
465 |
* |
55 | 466 |
* See the <a href="http://www.postgresql.org/docs/8.3/static/libpq-exec.html#LIBPQ-EXEC-MAIN">libpq PQexecParams tip</a> |
467 |
* for the parameter syntax to use. |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
468 |
* |
55 | 469 |
* @param evsql the context handle from \ref evsql_new_ |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
470 |
* @param trans the optional transaction handle from evsql_trans |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
471 |
* @param command the SQL command to bind the parameters to |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
472 |
* @param params the parameter types and values |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
473 |
* @param query_fn the evsql_query_cb() to call once the query is complete |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
474 |
* @param cb_arg the void* passed to the above |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
475 |
* @see evsql_query |
25
99a41f48e29b
evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents:
24
diff
changeset
|
476 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
477 |
struct evsql_query *evsql_query_params (struct evsql *evsql, struct evsql_trans *trans, |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
478 |
const char *command, const struct evsql_query_params *params, |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
479 |
evsql_query_cb query_fn, void *cb_arg |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
480 |
); |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
481 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
482 |
/** |
55 | 483 |
* Execute the given \a query_info's SQL query with the values given as variable arguments, using the \a query_info to |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
484 |
* resolve the types. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
485 |
* |
55 | 486 |
* See evsql_query() for more info about behaviour. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
487 |
* |
55 | 488 |
* @param evsql the context handle from \ref evsql_new_ |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
489 |
* @param trans the optional transaction handle from evsql_trans |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
490 |
* @param query_info the SQL query information |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
491 |
* @param query_fn the evsql_query_cb() to call once the query is complete |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
492 |
* @param cb_arg the void* passed to the above |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
493 |
* @see evsql_query |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
494 |
*/ |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
495 |
struct evsql_query *evsql_query_exec (struct evsql *evsql, struct evsql_trans *trans, |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
496 |
const struct evsql_query_info *query_info, |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
497 |
evsql_query_cb query_fn, void *cb_arg, |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
498 |
... |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
499 |
); |
24 | 500 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
501 |
/** |
55 | 502 |
* Abort a \a query returned by \ref evsql_query_ that has not yet completed (query_fn has not been called yet). |
27 | 503 |
* |
55 | 504 |
* The actual query itself may or may not be aborted (and hence may or may not be executed on the server), but \a query_fn |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
505 |
* will not be called anymore, and the query will dispose of itself and any results returned. |
27 | 506 |
* |
55 | 507 |
* If the \a query is part of a transaction, then \a trans must be given, and the query must be the query that is currently |
508 |
* executing on that trans. The transaction's \a ready_fn will be called once the query has been aborted and the |
|
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
509 |
* transaction is now idle again. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
510 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
511 |
* @param trans if the query is part of a transaction, then it MUST be given here |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
512 |
* @param query the in-progress query to abort |
27 | 513 |
*/ |
514 |
void evsql_query_abort (struct evsql_trans *trans, struct evsql_query *query); |
|
515 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
516 |
/** |
55 | 517 |
* Print out a textual dump of the given \a sql query and \a params using DEBUG |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
518 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
519 |
* @param sql the SQL query command |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
520 |
* @param params the list of parameter types and values |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
521 |
*/ |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
522 |
void evsql_query_debug (const char *sql, const struct evsql_query_params *params); |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
523 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
524 |
// @} |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
525 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
526 |
/** |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
527 |
* Transaction API |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
528 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
529 |
* @defgroup evsql_trans_* Transaction interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
530 |
* @see evsql.h |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
531 |
* @{ |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
532 |
*/ |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
533 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
534 |
/** |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
535 |
* Create a new transaction. |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
536 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
537 |
* A transaction will be allocated its own connection, and the "BEGIN TRANSACTION ..." query will be sent (use the |
55 | 538 |
* \a type argument to specify this). |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
539 |
* |
55 | 540 |
* Once the transaction has been opened, the given \a ready_fn will be triggered, and the transaction can then |
541 |
* be used (see \ref evsql_query_). |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
542 |
* |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
543 |
* If, at any point, the transaction-connection fails, any pending query will be forgotten (i.e. the query callback |
55 | 544 |
* will NOT be called), and the given \a error_fn will be called. Note that this includes some, but not all, |
545 |
* cases where \ref evsql_query_ returns an error. |
|
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
546 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
547 |
* Once you are done with the transaction, call either evsql_trans_commit() or evsql_trans_abort(). |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
548 |
* |
55 | 549 |
* @param evsql the context handle from \ref evsql_new_ |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
550 |
* @param type the type of transaction to create |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
551 |
* @param error_fn the evsql_trans_error_cb() to call if this transaction fails |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
552 |
* @param ready_fn the evsql_trans_ready_cb() to call once this transaction is ready for use |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
553 |
* @param done_fn the evsql_trans_done_cb() to call once this transaction has been commmited |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
554 |
* @param cb_arg the void* to pass to the above |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
555 |
* @return the evsql_trans handle for use with other functions |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
556 |
*/ |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
557 |
struct evsql_trans *evsql_trans (struct evsql *evsql, enum evsql_trans_type type, |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
558 |
evsql_trans_error_cb error_fn, |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
559 |
evsql_trans_ready_cb ready_fn, |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
560 |
evsql_trans_done_cb done_fn, |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
561 |
void *cb_arg |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
562 |
); |
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
563 |
|
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
564 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
565 |
* Commit a transaction using "COMMIT TRANSACTION". |
27 | 566 |
* |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
567 |
* The transaction must be idle, just like for evsql_query. Once the transaction has been commited, the transaction's |
55 | 568 |
* \a done_fn will be called, after which the transaction must not be used anymore. |
28
e944453ca924
split off dbfs components into a separate dir, improve dirop docs, error handling, etc
Tero Marttila <terom@fixme.fi>
parents:
27
diff
changeset
|
569 |
* |
55 | 570 |
* You cannot abort a COMMIT, calling trans_abort() on trans after a succesful trans_commit is an error. |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
571 |
* |
55 | 572 |
* Note that \a done_fn will never be called directly, always indirectly via the event loop. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
573 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
574 |
* @param trans the transaction handle from evsql_trans to commit |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
575 |
* @see evsql_trans |
26
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
576 |
*/ |
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
577 |
int evsql_trans_commit (struct evsql_trans *trans); |
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
578 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
579 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
580 |
* Abort a transaction, using "ROLLBACK TRANSACTION". |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
581 |
* |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
582 |
* No more transaction callbacks will be called. If there was a query running, it will be aborted, and the transaction |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
583 |
* then rollback'd. |
27 | 584 |
* |
55 | 585 |
* You cannot abort a COMMIT, calling trans_abort on \a trans after a call to trans_commit is an error. |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
586 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
587 |
* Do not call evsql_trans_abort from within evsql_trans_error_cb()! |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
588 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
589 |
* @param trans the transaction from evsql_trans to abort |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
590 |
* @see evsql_trans |
26
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
591 |
*/ |
27 | 592 |
void evsql_trans_abort (struct evsql_trans *trans); |
26
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
593 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
594 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
595 |
* Retrieve the transaction-specific error message from the underlying engine. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
596 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
597 |
* Intended to be called from evsql_trans_error_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
598 |
*/ |
26
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
599 |
const char *evsql_trans_error (struct evsql_trans *trans); |
61668c57f4bb
preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
600 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
601 |
// @} |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
602 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
603 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
604 |
* Parameter-building functions. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
605 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
606 |
* These manipulate the value of the given parameter index. |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
607 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
608 |
* @defgroup evsql_param_* Parameter interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
609 |
* @see evsql.h |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
610 |
* @{ |
24 | 611 |
*/ |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
612 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
613 |
/** |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
614 |
* Sets the value of the parameter at the given index |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
615 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
616 |
* @param params the evsql_query_params struct |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
617 |
* @param param the parameter index |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
618 |
* @param ptr pointer to the binary data |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
619 |
* @param len size of the binary data in bytes |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
620 |
* @return zero on success, <0 on error |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
621 |
*/ |
31 | 622 |
int evsql_param_binary (struct evsql_query_params *params, size_t param, const char *ptr, size_t len); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
623 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
624 |
/** @see evsql_param_binary */ |
24 | 625 |
int evsql_param_string (struct evsql_query_params *params, size_t param, const char *ptr); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
626 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
627 |
/** @see evsql_param_binary */ |
31 | 628 |
int evsql_param_uint16 (struct evsql_query_params *params, size_t param, uint16_t uval); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
629 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
630 |
/** @see evsql_param_binary */ |
24 | 631 |
int evsql_param_uint32 (struct evsql_query_params *params, size_t param, uint32_t uval); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
632 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
633 |
/** |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
634 |
* Sets the given parameter to NULL |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
635 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
636 |
* @param params the evsql_query_params struct |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
637 |
* @param param the parameter index |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
638 |
* @return zero on success, <0 on error |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
639 |
*/ |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
640 |
int evsql_param_null (struct evsql_query_params *params, size_t param); |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
641 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
642 |
/** |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
643 |
* Clears all the parameter values (sets them to NULL) |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
644 |
* |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
645 |
* @param params the evsql_query_params struct |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
646 |
* @return zero on success, <0 on error |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
647 |
*/ |
31 | 648 |
int evsql_params_clear (struct evsql_query_params *params); |
649 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
650 |
// @} |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
651 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
652 |
/** |
24 | 653 |
* Result-handling functions |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
654 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
655 |
* @defgroup evsql_result_* Result interface |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
656 |
* @see evsql.h |
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
657 |
* @see evsql_result |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
658 |
* @{ |
24 | 659 |
*/ |
660 |
||
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
661 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
662 |
* Check the result for errors. Intended for use with non-data queries, i.e. CREATE, etc. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
663 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
664 |
* Returns zero if the query was OK, err otherwise. EIO indicates an SQL error, the error message can be retrived |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
665 |
* using evsql_result_error. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
666 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
667 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
668 |
* @return zero on success, EIO on SQL error, positive error code otherwise |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
669 |
*/ |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
670 |
err_t evsql_result_check (struct evsql_result *res); |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
671 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
672 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
673 |
* The iterator-based interface results interface. |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
674 |
* |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
675 |
* Define an evsql_result_info struct that describes the columns returned by the query, and call evsql_result_begin on |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
676 |
* the evsql_result. This verifies the query result, and then prepares it for iteration using evsql_result_next. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
677 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
678 |
* Call evsql_result_end once you've stopped iteration. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
679 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
680 |
* Returns zero if the evsql_result is ready for iteration, err otherwise. EIO indicates an SQL error, the error |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
681 |
* message can be retreived using evsql_result_error. The result must be released in both cases. |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
682 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
683 |
* Note: currently the iterator state is simply stored in evsql_result, so only one iterator at a time per evsql_result. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
684 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
685 |
* @param info the metadata to use to handle the result row columns |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
686 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
687 |
* @return zero on success, +err on error |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
688 |
*/ |
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
689 |
err_t evsql_result_begin (struct evsql_result_info *info, struct evsql_result *res); |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
690 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
691 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
692 |
* Reads the next result row from the result prepared using evsql_result_begin. Stores the field values into to given |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
693 |
* pointer arguments based on the evsql_result_info given to evsql_result_begin. |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
694 |
* |
55 | 695 |
* If a field is NULL, and the result_info's evsql_item_type has flags.null_ok set, the given pointer is left |
696 |
* untouched, otherwise, an error is returned. |
|
697 |
* |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
698 |
* @param res the result handle previous prepared using evsql_result_begin |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
699 |
* @param ... a set of pointers corresponding to the evsql_result_info specified using evsql_result_begin |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
700 |
* @return >0 when a row was read, zero when there are no more rows left, and -err on error |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
701 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
702 |
int evsql_result_next (struct evsql_result *res, ...); |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
703 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
704 |
/** |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
705 |
* Ends the result iteration, releasing any associated resources and the result itself. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
706 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
707 |
* The result should not be iterated or accessed anymore. |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
708 |
* |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
709 |
* Note: this does the same thing as evsql_result_free, and works regardless of evsql_result_begin returning |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
710 |
* succesfully or not. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
711 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
712 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
713 |
* @see evsql_result_free |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
714 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
715 |
void evsql_result_end (struct evsql_result *res); |
24 | 716 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
717 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
718 |
* Get the error message associated with the result, intended for use after evsql_result_check/begin return an error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
719 |
* code. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
720 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
721 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
722 |
* @return a char* containing the NUL-terminated error string. Valid until evsql_result_free is called. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
723 |
*/ |
45
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
724 |
const char *evsql_result_error (const struct evsql_result *res); |
424ce5ab82fd
compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
725 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
726 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
727 |
* Get the number of data rows returned by the query |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
728 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
729 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
730 |
* @return the number of rows, >= 0 |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
731 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
732 |
size_t evsql_result_rows (const struct evsql_result *res); |
24 | 733 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
734 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
735 |
* Get the number of columns in the data results from the query |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
736 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
737 |
* @param res the result handle passed to evsql_query_cb() |
55 | 738 |
* @return the number of columns, presumeably zero if there were no results |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
739 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
740 |
size_t evsql_result_cols (const struct evsql_result *res); |
24 | 741 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
742 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
743 |
* Get the number of rows affected by an UPDATE/INSERT/etc query. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
744 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
745 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
746 |
* @return the number of rows affected, >= 0 |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
747 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
748 |
size_t evsql_result_affected (const struct evsql_result *res); |
34
460f995d3769
fix readdir to use ORDER BY, rename
Tero Marttila <terom@fixme.fi>
parents:
31
diff
changeset
|
749 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
750 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
751 |
* Fetch the raw binary value for the given field, returning it via ptr/size. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
752 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
753 |
* The given row/col must be within bounds as returned by evsql_result_rows/cols. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
754 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
755 |
* *ptr will point to *size bytes of read-only memory allocated internally. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
756 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
757 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
758 |
* @param row the row index to access |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
759 |
* @param col the column index to access |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
760 |
* @param ptr where to store a pointer to the read-only field data, free'd upon evsql_result_free |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
761 |
* @param size updated to the size of the field value pointed to by ptr |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
762 |
* @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
763 |
* @return zero on success, <0 on error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
764 |
*/ |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
765 |
int evsql_result_binary (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t *size, bool nullok); |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
766 |
|
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
767 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
768 |
* Fetch the textual value of the given field, returning it via ptr. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
769 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
770 |
* The given row/col must be within bounds as returned by evsql_result_rows/cols. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
771 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
772 |
* *ptr will point to a NUL-terminated string allocated internally. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
773 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
774 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
775 |
* @param row the row index to access |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
776 |
* @param col the column index to access |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
777 |
* @param ptr where to store a pointer to the read-only field data, free'd upon evsql_result_free |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
778 |
* @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
779 |
* @return zero on success, <0 on error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
780 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
781 |
int evsql_result_string (const struct evsql_result *res, size_t row, size_t col, const char **ptr, int nullok); |
24 | 782 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
783 |
/** |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
784 |
* Use evsql_result_binary to read a binary field value, and then convert it using ntoh[slq], storing the value in |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
785 |
* *val. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
786 |
* |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
787 |
* The given row/col must be within bounds as returned by evsql_result_rows/cols. |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
788 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
789 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
790 |
* @param row the row index to access |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
791 |
* @param col the column index to access |
52
f5037572c326
improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
792 |
* @param uval where to store the decoded value |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
793 |
* @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
794 |
* @return zero on success, <0 on error |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
795 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
796 |
int evsql_result_uint16 (const struct evsql_result *res, size_t row, size_t col, uint16_t *uval, int nullok); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
797 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
798 |
/** @see evsql_result_uint16 */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
799 |
int evsql_result_uint32 (const struct evsql_result *res, size_t row, size_t col, uint32_t *uval, int nullok); |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
800 |
|
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
801 |
/** @see evsql_result_uint16 */ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
802 |
int evsql_result_uint64 (const struct evsql_result *res, size_t row, size_t col, uint64_t *uval, int nullok); |
24 | 803 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
804 |
/** |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
805 |
* Every result handle passed to evsql_query_cb() MUST be released by the user, using this function. |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
806 |
* |
54
7dc8ff496da1
evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents:
53
diff
changeset
|
807 |
* @param res the result handle passed to evsql_query_cb() |
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
808 |
*/ |
44
9e76ee9729b6
more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents:
43
diff
changeset
|
809 |
void evsql_result_free (struct evsql_result *res); |
24 | 810 |
|
51
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
811 |
// @} |
c65d0f4c3bff
evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
812 |
|
21
e5da1d428e3e
new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
813 |
#endif /* EVSQL_H */ |