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/appender.c
CHANGED
|
@@ -37,8 +37,15 @@ static VALUE appender__append_uhugeint(VALUE self, VALUE lower, VALUE upper);
|
|
|
37
37
|
static VALUE appender__append_value(VALUE self, VALUE val);
|
|
38
38
|
static VALUE appender__append_data_chunk(VALUE self, VALUE chunk);
|
|
39
39
|
static VALUE appender__flush(VALUE self);
|
|
40
|
+
|
|
41
|
+
#ifdef HAVE_DUCKDB_H_GE_V1_5_0
|
|
42
|
+
static VALUE appender__clear(VALUE self);
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
static VALUE appender__add_column(VALUE self, VALUE name);
|
|
46
|
+
static VALUE appender__clear_columns(VALUE self);
|
|
40
47
|
static VALUE appender__close(VALUE self);
|
|
41
|
-
static VALUE
|
|
48
|
+
static VALUE state_to_rbool(duckdb_state state);
|
|
42
49
|
|
|
43
50
|
static const rb_data_type_t appender_data_type = {
|
|
44
51
|
"DuckDB/Appender",
|
|
@@ -95,7 +102,7 @@ static VALUE appender_s_create_query(VALUE klass, VALUE con, VALUE query, VALUE
|
|
|
95
102
|
type_array = ALLOCA_N(duckdb_logical_type, (size_t)column_count);
|
|
96
103
|
for (idx_t i = 0; i < column_count; i++) {
|
|
97
104
|
VALUE type_val = rb_ary_entry(types, i);
|
|
98
|
-
rubyDuckDBLogicalType *type_ctx =
|
|
105
|
+
rubyDuckDBLogicalType *type_ctx = rbduckdb_get_struct_logical_type(type_val);
|
|
99
106
|
type_array[i] = type_ctx->logical_type;
|
|
100
107
|
}
|
|
101
108
|
|
|
@@ -113,7 +120,7 @@ static VALUE appender_s_create_query(VALUE klass, VALUE con, VALUE query, VALUE
|
|
|
113
120
|
column_names[i] = StringValuePtr(col_name_val);
|
|
114
121
|
}
|
|
115
122
|
}
|
|
116
|
-
ctxcon =
|
|
123
|
+
ctxcon = rbduckdb_get_struct_connection(con);
|
|
117
124
|
appender = allocate(klass);
|
|
118
125
|
TypedData_Get_Struct(appender, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
119
126
|
if (duckdb_appender_create_query(ctxcon->con, query_str, column_count, type_array, table_name, column_names, &ctx->appender) == DuckDBError) {
|
|
@@ -134,7 +141,7 @@ static VALUE appender_initialize(VALUE self, VALUE con, VALUE schema, VALUE tabl
|
|
|
134
141
|
}
|
|
135
142
|
|
|
136
143
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
137
|
-
ctxcon =
|
|
144
|
+
ctxcon = rbduckdb_get_struct_connection(con);
|
|
138
145
|
|
|
139
146
|
if (schema != Qnil) {
|
|
140
147
|
pschema = StringValuePtr(schema);
|
|
@@ -179,7 +186,7 @@ static VALUE appender__end_row(VALUE self) {
|
|
|
179
186
|
rubyDuckDBAppender *ctx;
|
|
180
187
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
181
188
|
|
|
182
|
-
return
|
|
189
|
+
return state_to_rbool(duckdb_appender_end_row(ctx->appender));
|
|
183
190
|
}
|
|
184
191
|
|
|
185
192
|
/* :nodoc: */
|
|
@@ -191,7 +198,7 @@ static VALUE appender__append_bool(VALUE self, VALUE val) {
|
|
|
191
198
|
rb_raise(rb_eArgError, "argument must be boolean");
|
|
192
199
|
}
|
|
193
200
|
|
|
194
|
-
return
|
|
201
|
+
return state_to_rbool(duckdb_append_bool(ctx->appender, (val == Qtrue)));
|
|
195
202
|
}
|
|
196
203
|
|
|
197
204
|
/* :nodoc: */
|
|
@@ -201,7 +208,7 @@ static VALUE appender__append_int8(VALUE self, VALUE val) {
|
|
|
201
208
|
|
|
202
209
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
203
210
|
|
|
204
|
-
return
|
|
211
|
+
return state_to_rbool(duckdb_append_int8(ctx->appender, i8val));
|
|
205
212
|
}
|
|
206
213
|
|
|
207
214
|
/* :nodoc: */
|
|
@@ -211,7 +218,7 @@ static VALUE appender__append_int16(VALUE self, VALUE val) {
|
|
|
211
218
|
|
|
212
219
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
213
220
|
|
|
214
|
-
return
|
|
221
|
+
return state_to_rbool(duckdb_append_int16(ctx->appender, i16val));
|
|
215
222
|
}
|
|
216
223
|
|
|
217
224
|
/* :nodoc: */
|
|
@@ -221,7 +228,7 @@ static VALUE appender__append_int32(VALUE self, VALUE val) {
|
|
|
221
228
|
|
|
222
229
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
223
230
|
|
|
224
|
-
return
|
|
231
|
+
return state_to_rbool(duckdb_append_int32(ctx->appender, i32val));
|
|
225
232
|
}
|
|
226
233
|
|
|
227
234
|
/* :nodoc: */
|
|
@@ -231,7 +238,7 @@ static VALUE appender__append_int64(VALUE self, VALUE val) {
|
|
|
231
238
|
|
|
232
239
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
233
240
|
|
|
234
|
-
return
|
|
241
|
+
return state_to_rbool(duckdb_append_int64(ctx->appender, i64val));
|
|
235
242
|
}
|
|
236
243
|
|
|
237
244
|
/* :nodoc: */
|
|
@@ -241,7 +248,7 @@ static VALUE appender__append_uint8(VALUE self, VALUE val) {
|
|
|
241
248
|
|
|
242
249
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
243
250
|
|
|
244
|
-
return
|
|
251
|
+
return state_to_rbool(duckdb_append_uint8(ctx->appender, ui8val));
|
|
245
252
|
}
|
|
246
253
|
|
|
247
254
|
/* :nodoc: */
|
|
@@ -251,7 +258,7 @@ static VALUE appender__append_uint16(VALUE self, VALUE val) {
|
|
|
251
258
|
|
|
252
259
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
253
260
|
|
|
254
|
-
return
|
|
261
|
+
return state_to_rbool(duckdb_append_uint16(ctx->appender, ui16val));
|
|
255
262
|
}
|
|
256
263
|
|
|
257
264
|
/* :nodoc: */
|
|
@@ -261,7 +268,7 @@ static VALUE appender__append_uint32(VALUE self, VALUE val) {
|
|
|
261
268
|
|
|
262
269
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
263
270
|
|
|
264
|
-
return
|
|
271
|
+
return state_to_rbool(duckdb_append_uint32(ctx->appender, ui32val));
|
|
265
272
|
}
|
|
266
273
|
|
|
267
274
|
/* :nodoc: */
|
|
@@ -271,7 +278,7 @@ static VALUE appender__append_uint64(VALUE self, VALUE val) {
|
|
|
271
278
|
|
|
272
279
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
273
280
|
|
|
274
|
-
return
|
|
281
|
+
return state_to_rbool(duckdb_append_uint64(ctx->appender, ui64val));
|
|
275
282
|
}
|
|
276
283
|
|
|
277
284
|
/* :nodoc: */
|
|
@@ -281,7 +288,7 @@ static VALUE appender__append_float(VALUE self, VALUE val) {
|
|
|
281
288
|
|
|
282
289
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
283
290
|
|
|
284
|
-
return
|
|
291
|
+
return state_to_rbool(duckdb_append_float(ctx->appender, fval));
|
|
285
292
|
}
|
|
286
293
|
|
|
287
294
|
/* :nodoc: */
|
|
@@ -291,7 +298,7 @@ static VALUE appender__append_double(VALUE self, VALUE val) {
|
|
|
291
298
|
|
|
292
299
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
293
300
|
|
|
294
|
-
return
|
|
301
|
+
return state_to_rbool(duckdb_append_double(ctx->appender, dval));
|
|
295
302
|
}
|
|
296
303
|
|
|
297
304
|
/* :nodoc: */
|
|
@@ -301,7 +308,7 @@ static VALUE appender__append_varchar(VALUE self, VALUE val) {
|
|
|
301
308
|
|
|
302
309
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
303
310
|
|
|
304
|
-
return
|
|
311
|
+
return state_to_rbool(duckdb_append_varchar(ctx->appender, pval));
|
|
305
312
|
}
|
|
306
313
|
|
|
307
314
|
/* :nodoc: */
|
|
@@ -313,7 +320,7 @@ static VALUE appender__append_varchar_length(VALUE self, VALUE val, VALUE len) {
|
|
|
313
320
|
|
|
314
321
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
315
322
|
|
|
316
|
-
return
|
|
323
|
+
return state_to_rbool(duckdb_append_varchar_length(ctx->appender, pval, length));
|
|
317
324
|
}
|
|
318
325
|
|
|
319
326
|
/* :nodoc: */
|
|
@@ -325,7 +332,7 @@ static VALUE appender__append_blob(VALUE self, VALUE val) {
|
|
|
325
332
|
|
|
326
333
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
327
334
|
|
|
328
|
-
return
|
|
335
|
+
return state_to_rbool(duckdb_append_blob(ctx->appender, (void *)pval, length));
|
|
329
336
|
}
|
|
330
337
|
|
|
331
338
|
/* :nodoc: */
|
|
@@ -333,7 +340,7 @@ static VALUE appender__append_null(VALUE self) {
|
|
|
333
340
|
rubyDuckDBAppender *ctx;
|
|
334
341
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
335
342
|
|
|
336
|
-
return
|
|
343
|
+
return state_to_rbool(duckdb_append_null(ctx->appender));
|
|
337
344
|
}
|
|
338
345
|
|
|
339
346
|
/* :nodoc: */
|
|
@@ -341,7 +348,7 @@ static VALUE appender__append_default(VALUE self) {
|
|
|
341
348
|
rubyDuckDBAppender *ctx;
|
|
342
349
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
343
350
|
|
|
344
|
-
return
|
|
351
|
+
return state_to_rbool(duckdb_append_default(ctx->appender));
|
|
345
352
|
}
|
|
346
353
|
|
|
347
354
|
/* :nodoc: */
|
|
@@ -352,7 +359,7 @@ static VALUE appender__append_date(VALUE self, VALUE year, VALUE month, VALUE da
|
|
|
352
359
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
353
360
|
dt = rbduckdb_to_duckdb_date_from_value(year, month, day);
|
|
354
361
|
|
|
355
|
-
return
|
|
362
|
+
return state_to_rbool(duckdb_append_date(ctx->appender, dt));
|
|
356
363
|
}
|
|
357
364
|
|
|
358
365
|
/* :nodoc: */
|
|
@@ -363,7 +370,7 @@ static VALUE appender__append_interval(VALUE self, VALUE months, VALUE days, VAL
|
|
|
363
370
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
364
371
|
rbduckdb_to_duckdb_interval_from_value(&interval, months, days, micros);
|
|
365
372
|
|
|
366
|
-
return
|
|
373
|
+
return state_to_rbool(duckdb_append_interval(ctx->appender, interval));
|
|
367
374
|
}
|
|
368
375
|
|
|
369
376
|
/* :nodoc: */
|
|
@@ -374,7 +381,7 @@ static VALUE appender__append_time(VALUE self, VALUE hour, VALUE min, VALUE sec,
|
|
|
374
381
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
375
382
|
time = rbduckdb_to_duckdb_time_from_value(hour, min, sec, micros);
|
|
376
383
|
|
|
377
|
-
return
|
|
384
|
+
return state_to_rbool(duckdb_append_time(ctx->appender, time));
|
|
378
385
|
}
|
|
379
386
|
|
|
380
387
|
/* :nodoc: */
|
|
@@ -387,7 +394,7 @@ static VALUE appender__append_timestamp(VALUE self, VALUE year, VALUE month, VAL
|
|
|
387
394
|
|
|
388
395
|
timestamp = rbduckdb_to_duckdb_timestamp_from_value(year, month, day, hour, min, sec, micros);
|
|
389
396
|
|
|
390
|
-
return
|
|
397
|
+
return state_to_rbool(duckdb_append_timestamp(ctx->appender, timestamp));
|
|
391
398
|
}
|
|
392
399
|
|
|
393
400
|
/* :nodoc: */
|
|
@@ -401,7 +408,7 @@ static VALUE appender__append_hugeint(VALUE self, VALUE lower, VALUE upper) {
|
|
|
401
408
|
|
|
402
409
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
403
410
|
|
|
404
|
-
return
|
|
411
|
+
return state_to_rbool(duckdb_append_hugeint(ctx->appender, hugeint));
|
|
405
412
|
}
|
|
406
413
|
|
|
407
414
|
/* :nodoc: */
|
|
@@ -415,7 +422,7 @@ static VALUE appender__append_uhugeint(VALUE self, VALUE lower, VALUE upper) {
|
|
|
415
422
|
|
|
416
423
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
417
424
|
|
|
418
|
-
return
|
|
425
|
+
return state_to_rbool(duckdb_append_uhugeint(ctx->appender, uhugeint));
|
|
419
426
|
}
|
|
420
427
|
|
|
421
428
|
/* :nodoc: */
|
|
@@ -424,9 +431,9 @@ static VALUE appender__append_value(VALUE self, VALUE val) {
|
|
|
424
431
|
rubyDuckDBValue *value_ctx;
|
|
425
432
|
|
|
426
433
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
427
|
-
value_ctx =
|
|
434
|
+
value_ctx = rbduckdb_get_struct_value(val);
|
|
428
435
|
|
|
429
|
-
return
|
|
436
|
+
return state_to_rbool(duckdb_append_value(ctx->appender, value_ctx->value));
|
|
430
437
|
}
|
|
431
438
|
|
|
432
439
|
/* :nodoc: */
|
|
@@ -435,9 +442,9 @@ static VALUE appender__append_data_chunk(VALUE self, VALUE chunk) {
|
|
|
435
442
|
rubyDuckDBDataChunk *chunk_ctx;
|
|
436
443
|
|
|
437
444
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
438
|
-
chunk_ctx =
|
|
445
|
+
chunk_ctx = rbduckdb_get_struct_data_chunk(chunk);
|
|
439
446
|
|
|
440
|
-
return
|
|
447
|
+
return state_to_rbool(duckdb_append_data_chunk(ctx->appender, chunk_ctx->data_chunk));
|
|
441
448
|
}
|
|
442
449
|
|
|
443
450
|
/* :nodoc: */
|
|
@@ -445,7 +452,34 @@ static VALUE appender__flush(VALUE self) {
|
|
|
445
452
|
rubyDuckDBAppender *ctx;
|
|
446
453
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
447
454
|
|
|
448
|
-
return
|
|
455
|
+
return state_to_rbool(duckdb_appender_flush(ctx->appender));
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
#ifdef HAVE_DUCKDB_H_GE_V1_5_0
|
|
459
|
+
/* :nodoc: */
|
|
460
|
+
static VALUE appender__clear(VALUE self) {
|
|
461
|
+
rubyDuckDBAppender *ctx;
|
|
462
|
+
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
463
|
+
|
|
464
|
+
return state_to_rbool(duckdb_appender_clear(ctx->appender));
|
|
465
|
+
}
|
|
466
|
+
#endif
|
|
467
|
+
|
|
468
|
+
/* :nodoc: */
|
|
469
|
+
static VALUE appender__add_column(VALUE self, VALUE name) {
|
|
470
|
+
char *p = StringValuePtr(name);
|
|
471
|
+
rubyDuckDBAppender *ctx;
|
|
472
|
+
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
473
|
+
|
|
474
|
+
return state_to_rbool(duckdb_appender_add_column(ctx->appender, p));
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* :nodoc: */
|
|
478
|
+
static VALUE appender__clear_columns(VALUE self) {
|
|
479
|
+
rubyDuckDBAppender *ctx;
|
|
480
|
+
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
481
|
+
|
|
482
|
+
return state_to_rbool(duckdb_appender_clear_columns(ctx->appender));
|
|
449
483
|
}
|
|
450
484
|
|
|
451
485
|
/* :nodoc: */
|
|
@@ -453,17 +487,17 @@ static VALUE appender__close(VALUE self) {
|
|
|
453
487
|
rubyDuckDBAppender *ctx;
|
|
454
488
|
TypedData_Get_Struct(self, rubyDuckDBAppender, &appender_data_type, ctx);
|
|
455
489
|
|
|
456
|
-
return
|
|
490
|
+
return state_to_rbool(duckdb_appender_close(ctx->appender));
|
|
457
491
|
}
|
|
458
492
|
|
|
459
|
-
static VALUE
|
|
493
|
+
static VALUE state_to_rbool(duckdb_state state) {
|
|
460
494
|
if (state == DuckDBSuccess) {
|
|
461
495
|
return Qtrue;
|
|
462
496
|
}
|
|
463
497
|
return Qfalse;
|
|
464
498
|
}
|
|
465
499
|
|
|
466
|
-
void
|
|
500
|
+
void rbduckdb_init_appender(void) {
|
|
467
501
|
#if 0
|
|
468
502
|
VALUE mDuckDB = rb_define_module("DuckDB");
|
|
469
503
|
#endif
|
|
@@ -474,6 +508,13 @@ void rbduckdb_init_duckdb_appender(void) {
|
|
|
474
508
|
rb_define_method(cDuckDBAppender, "error_message", appender_error_message, 0);
|
|
475
509
|
rb_define_private_method(cDuckDBAppender, "_end_row", appender__end_row, 0);
|
|
476
510
|
rb_define_private_method(cDuckDBAppender, "_flush", appender__flush, 0);
|
|
511
|
+
|
|
512
|
+
#ifdef HAVE_DUCKDB_H_GE_V1_5_0
|
|
513
|
+
rb_define_private_method(cDuckDBAppender, "_clear", appender__clear, 0);
|
|
514
|
+
#endif
|
|
515
|
+
|
|
516
|
+
rb_define_private_method(cDuckDBAppender, "_add_column", appender__add_column, 1);
|
|
517
|
+
rb_define_private_method(cDuckDBAppender, "_clear_columns", appender__clear_columns, 0);
|
|
477
518
|
rb_define_private_method(cDuckDBAppender, "_close", appender__close, 0);
|
|
478
519
|
rb_define_private_method(cDuckDBAppender, "_append_bool", appender__append_bool, 1);
|
|
479
520
|
rb_define_private_method(cDuckDBAppender, "_append_int8", appender__append_int8, 1);
|
data/ext/duckdb/appender.h
CHANGED
data/ext/duckdb/client_context.c
CHANGED
|
@@ -5,7 +5,7 @@ VALUE cDuckDBClientContext;
|
|
|
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
|
|
8
|
+
static VALUE client_context_connection_id(VALUE self);
|
|
9
9
|
|
|
10
10
|
static const rb_data_type_t client_context_data_type = {
|
|
11
11
|
"DuckDB/ClientContext",
|
|
@@ -42,7 +42,7 @@ VALUE rbduckdb_client_context_new(duckdb_client_context client_context) {
|
|
|
42
42
|
return obj;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
rubyDuckDBClientContext *
|
|
45
|
+
rubyDuckDBClientContext *rbduckdb_get_struct_client_context(VALUE obj) {
|
|
46
46
|
rubyDuckDBClientContext *ctx;
|
|
47
47
|
TypedData_Get_Struct(obj, rubyDuckDBClientContext, &client_context_data_type, ctx);
|
|
48
48
|
return ctx;
|
|
@@ -54,17 +54,17 @@ rubyDuckDBClientContext *get_struct_client_context(VALUE obj) {
|
|
|
54
54
|
*
|
|
55
55
|
* Returns the connection id of the client context.
|
|
56
56
|
*/
|
|
57
|
-
static VALUE
|
|
57
|
+
static VALUE client_context_connection_id(VALUE self) {
|
|
58
58
|
rubyDuckDBClientContext *ctx;
|
|
59
59
|
TypedData_Get_Struct(self, rubyDuckDBClientContext, &client_context_data_type, ctx);
|
|
60
60
|
return ULL2NUM(duckdb_client_context_get_connection_id(ctx->client_context));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
void
|
|
63
|
+
void rbduckdb_init_client_context(void) {
|
|
64
64
|
#if 0
|
|
65
65
|
VALUE mDuckDB = rb_define_module("DuckDB");
|
|
66
66
|
#endif
|
|
67
67
|
cDuckDBClientContext = rb_define_class_under(mDuckDB, "ClientContext", rb_cObject);
|
|
68
68
|
rb_define_alloc_func(cDuckDBClientContext, allocate);
|
|
69
|
-
rb_define_method(cDuckDBClientContext, "connection_id",
|
|
69
|
+
rb_define_method(cDuckDBClientContext, "connection_id", client_context_connection_id, 0);
|
|
70
70
|
}
|
data/ext/duckdb/client_context.h
CHANGED
|
@@ -7,8 +7,8 @@ struct _rubyDuckDBClientContext {
|
|
|
7
7
|
|
|
8
8
|
typedef struct _rubyDuckDBClientContext rubyDuckDBClientContext;
|
|
9
9
|
|
|
10
|
-
void
|
|
10
|
+
void rbduckdb_init_client_context(void);
|
|
11
11
|
VALUE rbduckdb_client_context_new(duckdb_client_context client_context);
|
|
12
|
-
rubyDuckDBClientContext *
|
|
12
|
+
rubyDuckDBClientContext *rbduckdb_get_struct_client_context(VALUE obj);
|
|
13
13
|
|
|
14
14
|
#endif
|
data/ext/duckdb/column.c
CHANGED
|
@@ -5,9 +5,9 @@ static VALUE cDuckDBColumn;
|
|
|
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
|
|
8
|
+
static VALUE column__type(VALUE oDuckDBColumn);
|
|
9
|
+
static VALUE column_logical_type(VALUE oDuckDBColumn);
|
|
10
|
+
static VALUE column_name(VALUE oDuckDBColumn);
|
|
11
11
|
|
|
12
12
|
static const rb_data_type_t column_data_type = {
|
|
13
13
|
"DuckDB/Column",
|
|
@@ -31,7 +31,7 @@ static size_t memsize(const void *p) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/* :nodoc: */
|
|
34
|
-
VALUE
|
|
34
|
+
VALUE column__type(VALUE oDuckDBColumn) {
|
|
35
35
|
rubyDuckDBColumn *ctx;
|
|
36
36
|
rubyDuckDBResult *ctxresult;
|
|
37
37
|
VALUE result;
|
|
@@ -40,7 +40,7 @@ VALUE duckdb_column__type(VALUE oDuckDBColumn) {
|
|
|
40
40
|
TypedData_Get_Struct(oDuckDBColumn, rubyDuckDBColumn, &column_data_type, ctx);
|
|
41
41
|
|
|
42
42
|
result = rb_ivar_get(oDuckDBColumn, rb_intern("result"));
|
|
43
|
-
ctxresult =
|
|
43
|
+
ctxresult = rbduckdb_get_struct_result(result);
|
|
44
44
|
type = duckdb_column_type(&(ctxresult->result), ctx->col);
|
|
45
45
|
|
|
46
46
|
return INT2FIX(type);
|
|
@@ -53,7 +53,7 @@ VALUE duckdb_column__type(VALUE oDuckDBColumn) {
|
|
|
53
53
|
* Returns the logical type class.
|
|
54
54
|
*
|
|
55
55
|
*/
|
|
56
|
-
VALUE
|
|
56
|
+
VALUE column_logical_type(VALUE oDuckDBColumn) {
|
|
57
57
|
rubyDuckDBColumn *ctx;
|
|
58
58
|
rubyDuckDBResult *ctxresult;
|
|
59
59
|
VALUE result;
|
|
@@ -63,7 +63,7 @@ VALUE duckdb_column__logical_type(VALUE oDuckDBColumn) {
|
|
|
63
63
|
TypedData_Get_Struct(oDuckDBColumn, rubyDuckDBColumn, &column_data_type, ctx);
|
|
64
64
|
|
|
65
65
|
result = rb_ivar_get(oDuckDBColumn, rb_intern("result"));
|
|
66
|
-
ctxresult =
|
|
66
|
+
ctxresult = rbduckdb_get_struct_result(result);
|
|
67
67
|
_logical_type = duckdb_column_logical_type(&(ctxresult->result), ctx->col);
|
|
68
68
|
|
|
69
69
|
if (_logical_type) {
|
|
@@ -80,7 +80,7 @@ VALUE duckdb_column__logical_type(VALUE oDuckDBColumn) {
|
|
|
80
80
|
* Returns the column name.
|
|
81
81
|
*
|
|
82
82
|
*/
|
|
83
|
-
VALUE
|
|
83
|
+
VALUE column_name(VALUE oDuckDBColumn) {
|
|
84
84
|
rubyDuckDBColumn *ctx;
|
|
85
85
|
VALUE result;
|
|
86
86
|
rubyDuckDBResult *ctxresult;
|
|
@@ -89,7 +89,7 @@ VALUE duckdb_column_get_name(VALUE oDuckDBColumn) {
|
|
|
89
89
|
|
|
90
90
|
result = rb_ivar_get(oDuckDBColumn, rb_intern("result"));
|
|
91
91
|
|
|
92
|
-
ctxresult =
|
|
92
|
+
ctxresult = rbduckdb_get_struct_result(result);
|
|
93
93
|
|
|
94
94
|
return rb_utf8_str_new_cstr(duckdb_column_name(&(ctxresult->result), ctx->col));
|
|
95
95
|
}
|
|
@@ -107,14 +107,14 @@ VALUE rbduckdb_create_column(VALUE oDuckDBResult, idx_t col) {
|
|
|
107
107
|
return obj;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
void
|
|
110
|
+
void rbduckdb_init_column(void) {
|
|
111
111
|
#if 0
|
|
112
112
|
VALUE mDuckDB = rb_define_module("DuckDB");
|
|
113
113
|
#endif
|
|
114
114
|
cDuckDBColumn = rb_define_class_under(mDuckDB, "Column", rb_cObject);
|
|
115
115
|
rb_define_alloc_func(cDuckDBColumn, allocate);
|
|
116
116
|
|
|
117
|
-
rb_define_private_method(cDuckDBColumn, "_type",
|
|
118
|
-
rb_define_method(cDuckDBColumn, "logical_type",
|
|
119
|
-
rb_define_method(cDuckDBColumn, "name",
|
|
117
|
+
rb_define_private_method(cDuckDBColumn, "_type", column__type, 0);
|
|
118
|
+
rb_define_method(cDuckDBColumn, "logical_type", column_logical_type, 0);
|
|
119
|
+
rb_define_method(cDuckDBColumn, "name", column_name, 0);
|
|
120
120
|
}
|
data/ext/duckdb/column.h
CHANGED