duckdb 1.5.2.0 → 1.5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/duckdb.gemspec +37 -0
- data/ext/duckdb/aggregate_function.c +61 -100
- data/ext/duckdb/aggregate_function.h +2 -2
- data/ext/duckdb/appender.c +76 -35
- data/ext/duckdb/appender.h +1 -1
- data/ext/duckdb/client_context.c +5 -5
- data/ext/duckdb/client_context.h +2 -2
- data/ext/duckdb/column.c +13 -13
- data/ext/duckdb/column.h +1 -1
- data/ext/duckdb/connection.c +40 -41
- data/ext/duckdb/connection.h +2 -2
- data/ext/duckdb/converter.h +1 -7
- data/ext/duckdb/conveter.c +6 -6
- data/ext/duckdb/data_chunk.c +22 -22
- data/ext/duckdb/data_chunk.h +2 -2
- data/ext/duckdb/database.c +10 -10
- data/ext/duckdb/database.h +1 -1
- data/ext/duckdb/duckdb.c +17 -17
- data/ext/duckdb/expression.c +8 -8
- data/ext/duckdb/expression.h +1 -1
- data/ext/duckdb/extconf.rb +4 -3
- data/ext/duckdb/extracted_statements.c +15 -15
- data/ext/duckdb/extracted_statements.h +1 -1
- data/ext/duckdb/instance_cache.c +10 -10
- data/ext/duckdb/instance_cache.h +1 -1
- data/ext/duckdb/logical_type.c +94 -133
- data/ext/duckdb/logical_type.h +2 -2
- data/ext/duckdb/memory_helper.c +28 -28
- data/ext/duckdb/pending_result.c +27 -27
- data/ext/duckdb/pending_result.h +2 -2
- data/ext/duckdb/prepared_statement.c +103 -103
- data/ext/duckdb/prepared_statement.h +2 -2
- data/ext/duckdb/result.c +33 -33
- data/ext/duckdb/result.h +2 -3
- data/ext/duckdb/ruby-duckdb.h +4 -0
- data/ext/duckdb/scalar_function.c +3 -3
- data/ext/duckdb/table_description.c +1 -1
- data/ext/duckdb/table_function.c +3 -3
- data/ext/duckdb/table_function_bind_info.c +1 -1
- data/ext/duckdb/value.c +62 -50
- data/ext/duckdb/value.h +2 -2
- data/ext/duckdb/vector.c +20 -20
- data/ext/duckdb/vector.h +2 -2
- data/lib/duckdb/aggregate_function.rb +202 -3
- data/lib/duckdb/appender.rb +74 -0
- data/lib/duckdb/connection.rb +1 -16
- data/lib/duckdb/converter.rb +5 -0
- data/lib/duckdb/logical_type.rb +1 -3
- data/lib/duckdb/prepared_statement.rb +1 -1
- data/lib/duckdb/table_function.rb +0 -1
- data/lib/duckdb/value.rb +19 -0
- data/lib/duckdb/version.rb +1 -1
- metadata +2 -2
- data/lib/duckdb/duckdb_native.so +0 -0
data/ext/duckdb/memory_helper.c
CHANGED
|
@@ -14,7 +14,7 @@ static VALUE mDuckDBMemoryHelper;
|
|
|
14
14
|
* DuckDB::MemoryHelper.write_bigint(ptr, 0, 42) # Write 42 at index 0
|
|
15
15
|
* DuckDB::MemoryHelper.write_bigint(ptr, 1, 84) # Write 84 at index 1
|
|
16
16
|
*/
|
|
17
|
-
static VALUE
|
|
17
|
+
static VALUE memory_helper_s_write_bigint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
18
18
|
int64_t *data;
|
|
19
19
|
idx_t idx;
|
|
20
20
|
int64_t val;
|
|
@@ -41,7 +41,7 @@ static VALUE rbduckdb_memory_helper_write_bigint(VALUE self, VALUE ptr, VALUE in
|
|
|
41
41
|
* ptr = vector.get_data
|
|
42
42
|
* DuckDB::MemoryHelper.write_double(ptr, 0, 3.14)
|
|
43
43
|
*/
|
|
44
|
-
static VALUE
|
|
44
|
+
static VALUE memory_helper_s_write_double(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
45
45
|
double *data;
|
|
46
46
|
idx_t idx;
|
|
47
47
|
double val;
|
|
@@ -66,7 +66,7 @@ static VALUE rbduckdb_memory_helper_write_double(VALUE self, VALUE ptr, VALUE in
|
|
|
66
66
|
* ptr = vector.get_data
|
|
67
67
|
* DuckDB::MemoryHelper.write_integer(ptr, 0, 42)
|
|
68
68
|
*/
|
|
69
|
-
static VALUE
|
|
69
|
+
static VALUE memory_helper_s_write_integer(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
70
70
|
int32_t *data;
|
|
71
71
|
idx_t idx;
|
|
72
72
|
int32_t val;
|
|
@@ -88,7 +88,7 @@ static VALUE rbduckdb_memory_helper_write_integer(VALUE self, VALUE ptr, VALUE i
|
|
|
88
88
|
*
|
|
89
89
|
* Writes a boolean to raw memory.
|
|
90
90
|
*/
|
|
91
|
-
static VALUE
|
|
91
|
+
static VALUE memory_helper_s_write_boolean(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
92
92
|
bool *data;
|
|
93
93
|
idx_t idx;
|
|
94
94
|
|
|
@@ -107,7 +107,7 @@ static VALUE rbduckdb_memory_helper_write_boolean(VALUE self, VALUE ptr, VALUE i
|
|
|
107
107
|
*
|
|
108
108
|
* Writes an 8-bit signed integer (TINYINT) to raw memory.
|
|
109
109
|
*/
|
|
110
|
-
static VALUE
|
|
110
|
+
static VALUE memory_helper_s_write_tinyint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
111
111
|
int8_t *data;
|
|
112
112
|
idx_t idx;
|
|
113
113
|
|
|
@@ -126,7 +126,7 @@ static VALUE rbduckdb_memory_helper_write_tinyint(VALUE self, VALUE ptr, VALUE i
|
|
|
126
126
|
*
|
|
127
127
|
* Writes a 16-bit signed integer (SMALLINT) to raw memory.
|
|
128
128
|
*/
|
|
129
|
-
static VALUE
|
|
129
|
+
static VALUE memory_helper_s_write_smallint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
130
130
|
int16_t *data;
|
|
131
131
|
idx_t idx;
|
|
132
132
|
|
|
@@ -145,7 +145,7 @@ static VALUE rbduckdb_memory_helper_write_smallint(VALUE self, VALUE ptr, VALUE
|
|
|
145
145
|
*
|
|
146
146
|
* Writes an 8-bit unsigned integer (UTINYINT) to raw memory.
|
|
147
147
|
*/
|
|
148
|
-
static VALUE
|
|
148
|
+
static VALUE memory_helper_s_write_utinyint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
149
149
|
uint8_t *data;
|
|
150
150
|
idx_t idx;
|
|
151
151
|
|
|
@@ -164,7 +164,7 @@ static VALUE rbduckdb_memory_helper_write_utinyint(VALUE self, VALUE ptr, VALUE
|
|
|
164
164
|
*
|
|
165
165
|
* Writes a 16-bit unsigned integer (USMALLINT) to raw memory.
|
|
166
166
|
*/
|
|
167
|
-
static VALUE
|
|
167
|
+
static VALUE memory_helper_s_write_usmallint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
168
168
|
uint16_t *data;
|
|
169
169
|
idx_t idx;
|
|
170
170
|
|
|
@@ -183,7 +183,7 @@ static VALUE rbduckdb_memory_helper_write_usmallint(VALUE self, VALUE ptr, VALUE
|
|
|
183
183
|
*
|
|
184
184
|
* Writes a 32-bit unsigned integer (UINTEGER) to raw memory.
|
|
185
185
|
*/
|
|
186
|
-
static VALUE
|
|
186
|
+
static VALUE memory_helper_s_write_uinteger(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
187
187
|
uint32_t *data;
|
|
188
188
|
idx_t idx;
|
|
189
189
|
|
|
@@ -202,7 +202,7 @@ static VALUE rbduckdb_memory_helper_write_uinteger(VALUE self, VALUE ptr, VALUE
|
|
|
202
202
|
*
|
|
203
203
|
* Writes a 64-bit unsigned integer (UBIGINT) to raw memory.
|
|
204
204
|
*/
|
|
205
|
-
static VALUE
|
|
205
|
+
static VALUE memory_helper_s_write_ubigint(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
206
206
|
uint64_t *data;
|
|
207
207
|
idx_t idx;
|
|
208
208
|
|
|
@@ -221,7 +221,7 @@ static VALUE rbduckdb_memory_helper_write_ubigint(VALUE self, VALUE ptr, VALUE i
|
|
|
221
221
|
*
|
|
222
222
|
* Writes a 32-bit floating point number (FLOAT) to raw memory.
|
|
223
223
|
*/
|
|
224
|
-
static VALUE
|
|
224
|
+
static VALUE memory_helper_s_write_float(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
225
225
|
float *data;
|
|
226
226
|
idx_t idx;
|
|
227
227
|
|
|
@@ -244,7 +244,7 @@ static VALUE rbduckdb_memory_helper_write_float(VALUE self, VALUE ptr, VALUE ind
|
|
|
244
244
|
* ptr = vector.get_data
|
|
245
245
|
* DuckDB::MemoryHelper.write_timestamp(ptr, 0, Time.new(2024, 3, 15, 10, 30, 45))
|
|
246
246
|
*/
|
|
247
|
-
static VALUE
|
|
247
|
+
static VALUE memory_helper_s_write_timestamp(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
248
248
|
duckdb_timestamp *data;
|
|
249
249
|
idx_t idx;
|
|
250
250
|
|
|
@@ -273,7 +273,7 @@ static VALUE rbduckdb_memory_helper_write_timestamp(VALUE self, VALUE ptr, VALUE
|
|
|
273
273
|
* ptr = vector.get_data
|
|
274
274
|
* DuckDB::MemoryHelper.write_timestamp_tz(ptr, 0, Time.new(2024, 3, 15, 10, 30, 45, '+00:00'))
|
|
275
275
|
*/
|
|
276
|
-
static VALUE
|
|
276
|
+
static VALUE memory_helper_s_write_timestamp_tz(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
277
277
|
duckdb_time_tz *data;
|
|
278
278
|
idx_t idx;
|
|
279
279
|
int64_t secs;
|
|
@@ -295,7 +295,7 @@ static VALUE rbduckdb_memory_helper_write_timestamp_tz(VALUE self, VALUE ptr, VA
|
|
|
295
295
|
return Qnil;
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
static VALUE
|
|
298
|
+
static VALUE memory_helper_s_write_date(VALUE self, VALUE ptr, VALUE index, VALUE value) {
|
|
299
299
|
duckdb_date *data;
|
|
300
300
|
idx_t idx;
|
|
301
301
|
|
|
@@ -314,18 +314,18 @@ static VALUE rbduckdb_memory_helper_write_date(VALUE self, VALUE ptr, VALUE inde
|
|
|
314
314
|
void rbduckdb_init_memory_helper(void) {
|
|
315
315
|
mDuckDBMemoryHelper = rb_define_module_under(mDuckDB, "MemoryHelper");
|
|
316
316
|
|
|
317
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_bigint",
|
|
318
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_double",
|
|
319
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_integer",
|
|
320
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_boolean",
|
|
321
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_tinyint",
|
|
322
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_smallint",
|
|
323
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_utinyint",
|
|
324
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_usmallint",
|
|
325
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_uinteger",
|
|
326
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_ubigint",
|
|
327
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_float",
|
|
328
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp",
|
|
329
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp_tz",
|
|
330
|
-
rb_define_singleton_method(mDuckDBMemoryHelper, "write_date",
|
|
317
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_bigint", memory_helper_s_write_bigint, 3);
|
|
318
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_double", memory_helper_s_write_double, 3);
|
|
319
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_integer", memory_helper_s_write_integer, 3);
|
|
320
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_boolean", memory_helper_s_write_boolean, 3);
|
|
321
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_tinyint", memory_helper_s_write_tinyint, 3);
|
|
322
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_smallint", memory_helper_s_write_smallint, 3);
|
|
323
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_utinyint", memory_helper_s_write_utinyint, 3);
|
|
324
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_usmallint", memory_helper_s_write_usmallint, 3);
|
|
325
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_uinteger", memory_helper_s_write_uinteger, 3);
|
|
326
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_ubigint", memory_helper_s_write_ubigint, 3);
|
|
327
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_float", memory_helper_s_write_float, 3);
|
|
328
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp", memory_helper_s_write_timestamp, 3);
|
|
329
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp_tz", memory_helper_s_write_timestamp_tz, 3);
|
|
330
|
+
rb_define_singleton_method(mDuckDBMemoryHelper, "write_date", memory_helper_s_write_date, 3);
|
|
331
331
|
}
|
data/ext/duckdb/pending_result.c
CHANGED
|
@@ -5,12 +5,12 @@ static VALUE cDuckDBPendingResult;
|
|
|
5
5
|
static void deallocate(void *ctx);
|
|
6
6
|
static VALUE allocate(VALUE klass);
|
|
7
7
|
static size_t memsize(const void *p);
|
|
8
|
-
static VALUE
|
|
9
|
-
static VALUE
|
|
10
|
-
static VALUE
|
|
11
|
-
static VALUE
|
|
12
|
-
static VALUE
|
|
13
|
-
static VALUE
|
|
8
|
+
static VALUE pending_result_initialize(int argc, VALUE *args, VALUE self);
|
|
9
|
+
static VALUE pending_result_execute_task(VALUE self);
|
|
10
|
+
static VALUE pending_result_execute_pending(VALUE self);
|
|
11
|
+
static VALUE pending_result_execution_finished_p(VALUE self);
|
|
12
|
+
static VALUE pending_result__state(VALUE self);
|
|
13
|
+
static VALUE pending_result__execute_check_state(VALUE self);
|
|
14
14
|
|
|
15
15
|
static const rb_data_type_t pending_result_data_type = {
|
|
16
16
|
"DuckDB/PendingResult",
|
|
@@ -35,7 +35,7 @@ static size_t memsize(const void *p) {
|
|
|
35
35
|
return sizeof(rubyDuckDBPendingResult);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
static VALUE
|
|
38
|
+
static VALUE pending_result_initialize(int argc, VALUE *argv, VALUE self) {
|
|
39
39
|
VALUE oDuckDBPreparedStatement;
|
|
40
40
|
VALUE streaming_p = Qfalse;
|
|
41
41
|
duckdb_state state;
|
|
@@ -49,8 +49,8 @@ static VALUE duckdb_pending_result_initialize(int argc, VALUE *argv, VALUE self)
|
|
|
49
49
|
rb_raise(rb_eTypeError, "1st argument must be DuckDB::PreparedStatement");
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
rubyDuckDBPendingResult *ctx =
|
|
53
|
-
rubyDuckDBPreparedStatement *stmt =
|
|
52
|
+
rubyDuckDBPendingResult *ctx = rbduckdb_get_struct_pending_result(self);
|
|
53
|
+
rubyDuckDBPreparedStatement *stmt = rbduckdb_get_struct_prepared_statement(oDuckDBPreparedStatement);
|
|
54
54
|
|
|
55
55
|
state = duckdb_pending_prepared(stmt->prepared_statement, &(ctx->pending_result));
|
|
56
56
|
|
|
@@ -71,14 +71,14 @@ static VALUE duckdb_pending_result_initialize(int argc, VALUE *argv, VALUE self)
|
|
|
71
71
|
* pending_result = conn.async_query("slow query")
|
|
72
72
|
* pending_result.execute_task
|
|
73
73
|
*/
|
|
74
|
-
static VALUE
|
|
75
|
-
rubyDuckDBPendingResult *ctx =
|
|
74
|
+
static VALUE pending_result_execute_task(VALUE self) {
|
|
75
|
+
rubyDuckDBPendingResult *ctx = rbduckdb_get_struct_pending_result(self);
|
|
76
76
|
ctx->state = duckdb_pending_execute_task(ctx->pending_result);
|
|
77
77
|
return Qnil;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
static VALUE
|
|
81
|
-
rubyDuckDBPendingResult *ctx =
|
|
80
|
+
static VALUE pending_result_execution_finished_p(VALUE self) {
|
|
81
|
+
rubyDuckDBPendingResult *ctx = rbduckdb_get_struct_pending_result(self);
|
|
82
82
|
return duckdb_pending_execution_is_finished(ctx->state) ? Qtrue : Qfalse;
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -94,13 +94,13 @@ static VALUE duckdb_pending_result_execution_finished_p(VALUE self) {
|
|
|
94
94
|
* pending_result.execute_task while pending_result.state != :ready
|
|
95
95
|
* result = pending_result.execute_pending # => DuckDB::Result
|
|
96
96
|
*/
|
|
97
|
-
static VALUE
|
|
97
|
+
static VALUE pending_result_execute_pending(VALUE self) {
|
|
98
98
|
rubyDuckDBPendingResult *ctx;
|
|
99
99
|
rubyDuckDBResult *ctxr;
|
|
100
100
|
VALUE result = rbduckdb_create_result();
|
|
101
101
|
|
|
102
102
|
TypedData_Get_Struct(self, rubyDuckDBPendingResult, &pending_result_data_type, ctx);
|
|
103
|
-
ctxr =
|
|
103
|
+
ctxr = rbduckdb_get_struct_result(result);
|
|
104
104
|
if (duckdb_execute_pending(ctx->pending_result, &(ctxr->result)) == DuckDBError) {
|
|
105
105
|
rb_raise(eDuckDBError, "%s", duckdb_pending_error(ctx->pending_result));
|
|
106
106
|
}
|
|
@@ -108,34 +108,34 @@ static VALUE duckdb_pending_result_execute_pending(VALUE self) {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
/* :nodoc: */
|
|
111
|
-
static VALUE
|
|
112
|
-
rubyDuckDBPendingResult *ctx =
|
|
111
|
+
static VALUE pending_result__state(VALUE self) {
|
|
112
|
+
rubyDuckDBPendingResult *ctx = rbduckdb_get_struct_pending_result(self);
|
|
113
113
|
return INT2FIX(ctx->state);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/* :nodoc: */
|
|
117
|
-
static VALUE
|
|
118
|
-
rubyDuckDBPendingResult *ctx =
|
|
117
|
+
static VALUE pending_result__execute_check_state(VALUE self) {
|
|
118
|
+
rubyDuckDBPendingResult *ctx = rbduckdb_get_struct_pending_result(self);
|
|
119
119
|
return INT2FIX(duckdb_pending_execute_check_state(ctx->pending_result));
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
rubyDuckDBPendingResult *
|
|
122
|
+
rubyDuckDBPendingResult *rbduckdb_get_struct_pending_result(VALUE obj) {
|
|
123
123
|
rubyDuckDBPendingResult *ctx;
|
|
124
124
|
TypedData_Get_Struct(obj, rubyDuckDBPendingResult, &pending_result_data_type, ctx);
|
|
125
125
|
return ctx;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
void
|
|
128
|
+
void rbduckdb_init_pending_result(void) {
|
|
129
129
|
#if 0
|
|
130
130
|
VALUE mDuckDB = rb_define_module("DuckDB");
|
|
131
131
|
#endif
|
|
132
132
|
cDuckDBPendingResult = rb_define_class_under(mDuckDB, "PendingResult", rb_cObject);
|
|
133
133
|
rb_define_alloc_func(cDuckDBPendingResult, allocate);
|
|
134
134
|
|
|
135
|
-
rb_define_method(cDuckDBPendingResult, "initialize",
|
|
136
|
-
rb_define_method(cDuckDBPendingResult, "execute_task",
|
|
137
|
-
rb_define_method(cDuckDBPendingResult, "execute_pending",
|
|
138
|
-
rb_define_method(cDuckDBPendingResult, "execution_finished?",
|
|
139
|
-
rb_define_private_method(cDuckDBPendingResult, "_state",
|
|
140
|
-
rb_define_private_method(cDuckDBPendingResult, "_execute_check_state",
|
|
135
|
+
rb_define_method(cDuckDBPendingResult, "initialize", pending_result_initialize, -1);
|
|
136
|
+
rb_define_method(cDuckDBPendingResult, "execute_task", pending_result_execute_task, 0);
|
|
137
|
+
rb_define_method(cDuckDBPendingResult, "execute_pending", pending_result_execute_pending, 0);
|
|
138
|
+
rb_define_method(cDuckDBPendingResult, "execution_finished?", pending_result_execution_finished_p, 0);
|
|
139
|
+
rb_define_private_method(cDuckDBPendingResult, "_state", pending_result__state, 0);
|
|
140
|
+
rb_define_private_method(cDuckDBPendingResult, "_execute_check_state", pending_result__execute_check_state, 0);
|
|
141
141
|
}
|
data/ext/duckdb/pending_result.h
CHANGED
|
@@ -8,6 +8,6 @@ struct _rubyDuckDBPendingResult {
|
|
|
8
8
|
|
|
9
9
|
typedef struct _rubyDuckDBPendingResult rubyDuckDBPendingResult;
|
|
10
10
|
|
|
11
|
-
rubyDuckDBPendingResult *
|
|
12
|
-
void
|
|
11
|
+
rubyDuckDBPendingResult *rbduckdb_get_struct_pending_result(VALUE obj);
|
|
12
|
+
void rbduckdb_init_pending_result(void);
|
|
13
13
|
#endif
|