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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/duckdb.gemspec +37 -0
  4. data/ext/duckdb/aggregate_function.c +61 -100
  5. data/ext/duckdb/aggregate_function.h +2 -2
  6. data/ext/duckdb/appender.c +76 -35
  7. data/ext/duckdb/appender.h +1 -1
  8. data/ext/duckdb/client_context.c +5 -5
  9. data/ext/duckdb/client_context.h +2 -2
  10. data/ext/duckdb/column.c +13 -13
  11. data/ext/duckdb/column.h +1 -1
  12. data/ext/duckdb/connection.c +40 -41
  13. data/ext/duckdb/connection.h +2 -2
  14. data/ext/duckdb/converter.h +1 -7
  15. data/ext/duckdb/conveter.c +6 -6
  16. data/ext/duckdb/data_chunk.c +22 -22
  17. data/ext/duckdb/data_chunk.h +2 -2
  18. data/ext/duckdb/database.c +10 -10
  19. data/ext/duckdb/database.h +1 -1
  20. data/ext/duckdb/duckdb.c +17 -17
  21. data/ext/duckdb/expression.c +8 -8
  22. data/ext/duckdb/expression.h +1 -1
  23. data/ext/duckdb/extconf.rb +4 -3
  24. data/ext/duckdb/extracted_statements.c +15 -15
  25. data/ext/duckdb/extracted_statements.h +1 -1
  26. data/ext/duckdb/instance_cache.c +10 -10
  27. data/ext/duckdb/instance_cache.h +1 -1
  28. data/ext/duckdb/logical_type.c +94 -133
  29. data/ext/duckdb/logical_type.h +2 -2
  30. data/ext/duckdb/memory_helper.c +28 -28
  31. data/ext/duckdb/pending_result.c +27 -27
  32. data/ext/duckdb/pending_result.h +2 -2
  33. data/ext/duckdb/prepared_statement.c +103 -103
  34. data/ext/duckdb/prepared_statement.h +2 -2
  35. data/ext/duckdb/result.c +33 -33
  36. data/ext/duckdb/result.h +2 -3
  37. data/ext/duckdb/ruby-duckdb.h +4 -0
  38. data/ext/duckdb/scalar_function.c +3 -3
  39. data/ext/duckdb/table_description.c +1 -1
  40. data/ext/duckdb/table_function.c +3 -3
  41. data/ext/duckdb/table_function_bind_info.c +1 -1
  42. data/ext/duckdb/value.c +62 -50
  43. data/ext/duckdb/value.h +2 -2
  44. data/ext/duckdb/vector.c +20 -20
  45. data/ext/duckdb/vector.h +2 -2
  46. data/lib/duckdb/aggregate_function.rb +202 -3
  47. data/lib/duckdb/appender.rb +74 -0
  48. data/lib/duckdb/connection.rb +1 -16
  49. data/lib/duckdb/converter.rb +5 -0
  50. data/lib/duckdb/logical_type.rb +1 -3
  51. data/lib/duckdb/prepared_statement.rb +1 -1
  52. data/lib/duckdb/table_function.rb +0 -1
  53. data/lib/duckdb/value.rb +19 -0
  54. data/lib/duckdb/version.rb +1 -1
  55. metadata +2 -2
  56. data/lib/duckdb/duckdb_native.so +0 -0
@@ -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 rbduckdb_memory_helper_write_bigint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_double(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_integer(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_boolean(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_tinyint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_smallint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_utinyint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_usmallint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_uinteger(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_ubigint(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_float(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_timestamp(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_timestamp_tz(VALUE self, VALUE ptr, VALUE index, VALUE 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 rbduckdb_memory_helper_write_date(VALUE self, VALUE ptr, VALUE index, VALUE 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", rbduckdb_memory_helper_write_bigint, 3);
318
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_double", rbduckdb_memory_helper_write_double, 3);
319
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_integer", rbduckdb_memory_helper_write_integer, 3);
320
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_boolean", rbduckdb_memory_helper_write_boolean, 3);
321
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_tinyint", rbduckdb_memory_helper_write_tinyint, 3);
322
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_smallint", rbduckdb_memory_helper_write_smallint, 3);
323
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_utinyint", rbduckdb_memory_helper_write_utinyint, 3);
324
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_usmallint", rbduckdb_memory_helper_write_usmallint, 3);
325
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_uinteger", rbduckdb_memory_helper_write_uinteger, 3);
326
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_ubigint", rbduckdb_memory_helper_write_ubigint, 3);
327
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_float", rbduckdb_memory_helper_write_float, 3);
328
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp", rbduckdb_memory_helper_write_timestamp, 3);
329
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_timestamp_tz", rbduckdb_memory_helper_write_timestamp_tz, 3);
330
- rb_define_singleton_method(mDuckDBMemoryHelper, "write_date", rbduckdb_memory_helper_write_date, 3);
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
  }
@@ -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 duckdb_pending_result_initialize(int argc, VALUE *args, VALUE self);
9
- static VALUE duckdb_pending_result_execute_task(VALUE self);
10
- static VALUE duckdb_pending_result_execute_pending(VALUE self);
11
- static VALUE duckdb_pending_result_execution_finished_p(VALUE self);
12
- static VALUE duckdb_pending_result__state(VALUE self);
13
- static VALUE duckdb_pending_result__execute_check_state(VALUE self);
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 duckdb_pending_result_initialize(int argc, VALUE *argv, VALUE self) {
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 = get_struct_pending_result(self);
53
- rubyDuckDBPreparedStatement *stmt = get_struct_prepared_statement(oDuckDBPreparedStatement);
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 duckdb_pending_result_execute_task(VALUE self) {
75
- rubyDuckDBPendingResult *ctx = get_struct_pending_result(self);
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 duckdb_pending_result_execution_finished_p(VALUE self) {
81
- rubyDuckDBPendingResult *ctx = get_struct_pending_result(self);
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 duckdb_pending_result_execute_pending(VALUE self) {
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 = get_struct_result(result);
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 duckdb_pending_result__state(VALUE self) {
112
- rubyDuckDBPendingResult *ctx = get_struct_pending_result(self);
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 duckdb_pending_result__execute_check_state(VALUE self) {
118
- rubyDuckDBPendingResult *ctx = get_struct_pending_result(self);
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 *get_struct_pending_result(VALUE obj) {
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 rbduckdb_init_duckdb_pending_result(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", duckdb_pending_result_initialize, -1);
136
- rb_define_method(cDuckDBPendingResult, "execute_task", duckdb_pending_result_execute_task, 0);
137
- rb_define_method(cDuckDBPendingResult, "execute_pending", duckdb_pending_result_execute_pending, 0);
138
- rb_define_method(cDuckDBPendingResult, "execution_finished?", duckdb_pending_result_execution_finished_p, 0);
139
- rb_define_private_method(cDuckDBPendingResult, "_state", duckdb_pending_result__state, 0);
140
- rb_define_private_method(cDuckDBPendingResult, "_execute_check_state", duckdb_pending_result__execute_check_state, 0);
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
  }
@@ -8,6 +8,6 @@ struct _rubyDuckDBPendingResult {
8
8
 
9
9
  typedef struct _rubyDuckDBPendingResult rubyDuckDBPendingResult;
10
10
 
11
- rubyDuckDBPendingResult *get_struct_pending_result(VALUE obj);
12
- void rbduckdb_init_duckdb_pending_result(void);
11
+ rubyDuckDBPendingResult *rbduckdb_get_struct_pending_result(VALUE obj);
12
+ void rbduckdb_init_pending_result(void);
13
13
  #endif