10
10
11
11
#pragma once
12
12
13
+ #ifdef _WIN32
14
+ #ifdef DUCKDB_BUILD_LIBRARY
15
+ #define __declspec (dllexport )
16
+ #else
17
+ #define __declspec (dllimport )
18
+ #endif
19
+ #else
20
+ #define DUCKDB_API
21
+ #endif
22
+
13
23
#include <stdbool.h>
14
24
#include <stdint.h>
15
25
#include <stdlib.h>
16
26
17
- #ifdef __cplusplus
18
- ##extern "C" {
19
- #endif
20
-
21
27
typedef uint64_t idx_t ;
22
28
23
29
typedef enum DUCKDB_TYPE {
@@ -36,8 +42,14 @@ typedef enum DUCKDB_TYPE {
36
42
DUCKDB_TYPE_FLOAT ,
37
43
// double
38
44
DUCKDB_TYPE_DOUBLE ,
39
- // duckdb_timestamp
45
+ // duckdb_timestamp (us)
40
46
DUCKDB_TYPE_TIMESTAMP ,
47
+ // duckdb_timestamp (s)
48
+ DUCKDB_TYPE_TIMESTAMP_S ,
49
+ // duckdb_timestamp (ns)
50
+ DUCKDB_TYPE_TIMESTAMP_NS ,
51
+ // duckdb_timestamp (ms)
52
+ DUCKDB_TYPE_TIMESTAMP_MS ,
41
53
// duckdb_date
42
54
DUCKDB_TYPE_DATE ,
43
55
// duckdb_time
@@ -47,7 +59,9 @@ typedef enum DUCKDB_TYPE {
47
59
// duckdb_hugeint
48
60
DUCKDB_TYPE_HUGEINT ,
49
61
// const char*
50
- DUCKDB_TYPE_VARCHAR
62
+ DUCKDB_TYPE_VARCHAR ,
63
+ // duckdb_blob
64
+ DUCKDB_TYPE_BLOB
51
65
} duckdb_type ;
52
66
53
67
typedef struct {
@@ -60,7 +74,7 @@ typedef struct {
60
74
int8_t hour ;
61
75
int8_t min ;
62
76
int8_t sec ;
63
- int16_t msec ;
77
+ int16_t micros ;
64
78
} duckdb_time ;
65
79
66
80
typedef struct {
@@ -71,14 +85,19 @@ typedef struct {
71
85
typedef struct {
72
86
int32_t months ;
73
87
int32_t days ;
74
- int64_t msecs ;
88
+ int64_t micros ;
75
89
} duckdb_interval ;
76
90
77
91
typedef struct {
78
92
uint64_t lower ;
79
93
int64_t upper ;
80
94
} duckdb_hugeint ;
81
95
96
+ typedef struct {
97
+ void * data ;
98
+ idx_t size ;
99
+ } duckdb_blob ;
100
+
82
101
typedef struct {
83
102
void * data ;
84
103
bool * nullmask ;
@@ -107,6 +126,7 @@ typedef struct {
107
126
typedef void * duckdb_database ;
108
127
typedef void * duckdb_connection ;
109
128
typedef void * duckdb_prepared_statement ;
129
+ typedef void * duckdb_appender ;
110
130
111
131
typedef enum { DuckDBSuccess = 0 , DuckDBError = 1 } duckdb_state ;
112
132
@@ -144,18 +164,29 @@ int16_t duckdb_value_int16(duckdb_result *result, idx_t col, idx_t row);
144
164
int32_t duckdb_value_int32 (duckdb_result * result , idx_t col , idx_t row );
145
165
//! Converts the specified value to an int64_t. Returns 0 on failure or NULL.
146
166
int64_t duckdb_value_int64 (duckdb_result * result , idx_t col , idx_t row );
167
+ //! Converts the specified value to an uint8_t. Returns 0 on failure or NULL.
168
+ uint8_t duckdb_value_uint8 (duckdb_result * result , idx_t col , idx_t row );
169
+ //! Converts the specified value to an uint16_t. Returns 0 on failure or NULL.
170
+ uint16_t duckdb_value_uint16 (duckdb_result * result , idx_t col , idx_t row );
171
+ //! Converts the specified value to an uint64_t. Returns 0 on failure or NULL.
172
+ uint32_t duckdb_value_uint32 (duckdb_result * result , idx_t col , idx_t row );
173
+ //! Converts the specified value to an uint64_t. Returns 0 on failure or NULL.
174
+ uint64_t duckdb_value_uint64 (duckdb_result * result , idx_t col , idx_t row );
147
175
//! Converts the specified value to a float. Returns 0.0 on failure or NULL.
148
176
float duckdb_value_float (duckdb_result * result , idx_t col , idx_t row );
149
177
//! Converts the specified value to a double. Returns 0.0 on failure or NULL.
150
178
double duckdb_value_double (duckdb_result * result , idx_t col , idx_t row );
151
179
//! Converts the specified value to a string. Returns nullptr on failure or NULL. The result must be freed with free.
152
180
char * duckdb_value_varchar (duckdb_result * result , idx_t col , idx_t row );
181
+ //! Fetches a blob from a result set column. Returns a blob with blob.data set to nullptr on failure or NULL. The
182
+ //! resulting "blob.data" must be freed with free.
183
+ duckdb_blob duckdb_value_blob (duckdb_result * result , idx_t col , idx_t row );
153
184
154
185
// Prepared Statements
155
186
156
187
//! prepares the specified SQL query in the specified connection handle. [OUT: prepared statement descriptor]
157
188
duckdb_state duckdb_prepare (duckdb_connection connection , const char * query ,
158
- duckdb_prepared_statement * out_prepared_statement );
189
+ duckdb_prepared_statement * out_prepared_statement );
159
190
160
191
duckdb_state duckdb_nparams (duckdb_prepared_statement prepared_statement , idx_t * nparams_out );
161
192
@@ -165,17 +196,54 @@ duckdb_state duckdb_bind_int8(duckdb_prepared_statement prepared_statement, idx_
165
196
duckdb_state duckdb_bind_int16 (duckdb_prepared_statement prepared_statement , idx_t param_idx , int16_t val );
166
197
duckdb_state duckdb_bind_int32 (duckdb_prepared_statement prepared_statement , idx_t param_idx , int32_t val );
167
198
duckdb_state duckdb_bind_int64 (duckdb_prepared_statement prepared_statement , idx_t param_idx , int64_t val );
199
+ #duckdb_state duckdb_bind_uint8(duckdb_prepared_statement prepared_statement, idx_t param_idx, int8_t val);
200
+ #duckdb_state duckdb_bind_uint16(duckdb_prepared_statement prepared_statement, idx_t param_idx, int16_t val);
201
+ duckdb_state duckdb_bind_uint32 (duckdb_prepared_statement prepared_statement , idx_t param_idx , uint32_t val );
202
+ duckdb_state duckdb_bind_uint64 (duckdb_prepared_statement prepared_statement , idx_t param_idx , uint64_t val );
168
203
duckdb_state duckdb_bind_float (duckdb_prepared_statement prepared_statement , idx_t param_idx , float val );
169
204
duckdb_state duckdb_bind_double (duckdb_prepared_statement prepared_statement , idx_t param_idx , double val );
170
- duckdb_state duckdb_bind_varchar (duckdb_prepared_statement prepared_statement , idx_t param_idx , const char * val );
205
+ duckdb_state duckdb_bind_varchar (duckdb_prepared_statement prepared_statement , idx_t param_idx ,
206
+ const char * val );
207
+ duckdb_state duckdb_bind_varchar_length (duckdb_prepared_statement prepared_statement , idx_t param_idx ,
208
+ const char * val , idx_t length );
209
+ duckdb_state duckdb_bind_blob (duckdb_prepared_statement prepared_statement , idx_t param_idx ,
210
+ const void * data , idx_t length );
171
211
duckdb_state duckdb_bind_null (duckdb_prepared_statement prepared_statement , idx_t param_idx );
172
212
173
213
//! Executes the prepared statements with currently bound parameters
174
- duckdb_state duckdb_execute_prepared (duckdb_prepared_statement prepared_statement , duckdb_result * out_result );
214
+ duckdb_state duckdb_execute_prepared (duckdb_prepared_statement prepared_statement ,
215
+ duckdb_result * out_result );
175
216
176
217
//! Destroys the specified prepared statement descriptor
177
218
void duckdb_destroy_prepare (duckdb_prepared_statement * prepared_statement );
178
219
179
- #ifdef __cplusplus
180
- ##}
181
- #endif
220
+ duckdb_state duckdb_appender_create (duckdb_connection connection , const char * schema , const char * table ,
221
+ duckdb_appender * out_appender );
222
+
223
+ duckdb_state duckdb_appender_begin_row (duckdb_appender appender );
224
+ duckdb_state duckdb_appender_end_row (duckdb_appender appender );
225
+
226
+ duckdb_state duckdb_append_bool (duckdb_appender appender , bool value );
227
+
228
+ duckdb_state duckdb_append_int8 (duckdb_appender appender , int8_t value );
229
+ duckdb_state duckdb_append_int16 (duckdb_appender appender , int16_t value );
230
+ duckdb_state duckdb_append_int32 (duckdb_appender appender , int32_t value );
231
+ duckdb_state duckdb_append_int64 (duckdb_appender appender , int64_t value );
232
+
233
+ duckdb_state duckdb_append_uint8 (duckdb_appender appender , uint8_t value );
234
+ duckdb_state duckdb_append_uint16 (duckdb_appender appender , uint16_t value );
235
+ duckdb_state duckdb_append_uint32 (duckdb_appender appender , uint32_t value );
236
+ duckdb_state duckdb_append_uint64 (duckdb_appender appender , uint64_t value );
237
+
238
+ duckdb_state duckdb_append_float (duckdb_appender appender , float value );
239
+ duckdb_state duckdb_append_double (duckdb_appender appender , double value );
240
+
241
+ duckdb_state duckdb_append_varchar (duckdb_appender appender , const char * val );
242
+ duckdb_state duckdb_append_varchar_length (duckdb_appender appender , const char * val , idx_t length );
243
+ duckdb_state duckdb_append_blob (duckdb_appender appender , const void * data , idx_t length );
244
+ duckdb_state duckdb_append_null (duckdb_appender appender );
245
+
246
+ duckdb_state duckdb_appender_flush (duckdb_appender appender );
247
+ duckdb_state duckdb_appender_close (duckdb_appender appender );
248
+
249
+ duckdb_state duckdb_appender_destroy (duckdb_appender * appender );
0 commit comments