duckdb 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test_on_macos.yml +2 -2
- data/.github/workflows/test_on_ubuntu.yml +2 -2
- data/.github/workflows/test_on_windows.yml +2 -2
- data/CHANGELOG.md +13 -0
- data/Gemfile.lock +3 -3
- data/duckdb.gemspec +1 -1
- data/ext/duckdb/extconf.rb +1 -1
- data/ext/duckdb/result.c +56 -0
- data/lib/duckdb/library_version.rb +3 -0
- data/lib/duckdb/version.rb +1 -1
- data/lib/duckdb.rb +1 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4780513bea94513e38b460cf9580b9bad9b9128d913a46f58f2054451cf838d
|
4
|
+
data.tar.gz: 5cbfe5da32da9562d121d634a7a45fdc153222bb4c5b8c79a2f37dbff6f57f27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04acc6297bac9ae7d217072d1fec3b7c603f407270143d654f738462e0f540a2e8ebdb67fa4d466ff13636dab279a0d245241201c9b3f829f4e97fbf628fb086
|
7
|
+
data.tar.gz: aa200fce49d05edee27095771e4c7e394a7431b8b1881e58d053f46dafc628920e4924c899159619c2fd337c6607eeed55f5863ea0e119f13ec2236d72c33f6b
|
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
runs-on: macos-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
ruby: ['2.
|
19
|
-
duckdb: ['0.
|
18
|
+
ruby: ['2.7.7', '3.0.5', '3.1.3', '3.2.1', 'head']
|
19
|
+
duckdb: ['0.7.0', '0.6.1']
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v3
|
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
runs-on: ubuntu-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
ruby: ['2.
|
19
|
-
duckdb: ['0.
|
18
|
+
ruby: ['2.7.7', '3.0.5', '3.1.3', '3.2.1', 'head']
|
19
|
+
duckdb: ['0.7.0', '0.6.1']
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v3
|
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
runs-on: windows-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
ruby: ['2.
|
19
|
-
duckdb: ['0.
|
18
|
+
ruby: ['2.7.7', '3.0.5', '3.1.3', '3.2.1', 'ucrt', 'mingw', 'mswin', 'head']
|
19
|
+
duckdb: ['0.7.0', '0.6.1']
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v3
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# ChangeLog
|
2
2
|
|
3
|
+
# 0.7.0
|
4
|
+
- bump duckdb to 0.7.0
|
5
|
+
- fix have_func argument order
|
6
|
+
- remove unused variable in test
|
7
|
+
- add DuckDB::LIBRARY_VERSION
|
8
|
+
- add DuckDB::Result#_to_string_internal
|
9
|
+
- add DuckDB::Result#__to_hugeint_internal
|
10
|
+
- add DuckDB::Result#__to_decimal_internal
|
11
|
+
- add Ruby 3.2.1 on CI test
|
12
|
+
- add Ruby mswin on CI test
|
13
|
+
## Breaking Change
|
14
|
+
- drop Ruby 2.6
|
15
|
+
|
3
16
|
# 0.6.1
|
4
17
|
- bump Ruby to 3.2.0 on CI
|
5
18
|
- fix deprected warning (double_heap is deprecated in GC.verify_compaction_references) with Ruby 3.2.0 on CI
|
data/Gemfile.lock
CHANGED
data/duckdb.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
end
|
27
27
|
spec.require_paths = ['lib']
|
28
28
|
spec.extensions = ['ext/duckdb/extconf.rb']
|
29
|
-
spec.required_ruby_version = '>= 2.
|
29
|
+
spec.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
31
31
|
spec.add_development_dependency 'bundler', '~> 2.3'
|
32
32
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
data/ext/duckdb/extconf.rb
CHANGED
@@ -2,7 +2,7 @@ require 'mkmf'
|
|
2
2
|
|
3
3
|
def duckdb_library_available?(func)
|
4
4
|
header = find_header('duckdb.h') || find_header('duckdb.h', '/opt/homebrew/include')
|
5
|
-
library = have_func('duckdb'
|
5
|
+
library = have_func(func, 'duckdb.h') || find_library('duckdb', func, '/opt/homebrew/opt/duckdb/lib')
|
6
6
|
header && library
|
7
7
|
end
|
8
8
|
|
data/ext/duckdb/result.c
CHANGED
@@ -10,6 +10,8 @@ static VALUE to_ruby_obj_smallint(duckdb_result *result, idx_t col_idx, idx_t ro
|
|
10
10
|
static VALUE to_ruby_obj_utinyint(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
11
11
|
static VALUE to_ruby_obj_integer(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
12
12
|
static VALUE to_ruby_obj_bigint(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
13
|
+
static VALUE to_ruby_obj_hugeint(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
14
|
+
static VALUE to_ruby_obj_decimal(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
13
15
|
static VALUE to_ruby_obj_float(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
14
16
|
static VALUE to_ruby_obj_double(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
15
17
|
static VALUE to_ruby_obj_blob(duckdb_result *result, idx_t col_idx, idx_t row_idx);
|
@@ -24,9 +26,12 @@ static VALUE duckdb_result__to_smallint(VALUE oDuckDBResult, VALUE row_idx, VALU
|
|
24
26
|
static VALUE duckdb_result__to_utinyint(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
25
27
|
static VALUE duckdb_result__to_integer(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
26
28
|
static VALUE duckdb_result__to_bigint(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
29
|
+
static VALUE duckdb_result___to_hugeint_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
30
|
+
static VALUE duckdb_result___to_decimal_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
27
31
|
static VALUE duckdb_result__to_float(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
28
32
|
static VALUE duckdb_result__to_double(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
29
33
|
static VALUE duckdb_result__to_string(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
34
|
+
static VALUE duckdb_result__to_string_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
30
35
|
static VALUE duckdb_result__to_blob(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx);
|
31
36
|
static VALUE duckdb_result__enum_internal_type(VALUE oDuckDBResult, VALUE col_idx);
|
32
37
|
static VALUE duckdb_result__enum_dictionary_size(VALUE oDuckDBResult, VALUE col_idx);
|
@@ -85,6 +90,16 @@ static VALUE to_ruby_obj_bigint(duckdb_result *result, idx_t col_idx, idx_t row_
|
|
85
90
|
return rb_int2big(i64val);
|
86
91
|
}
|
87
92
|
|
93
|
+
static VALUE to_ruby_obj_hugeint(duckdb_result *result, idx_t col_idx, idx_t row_idx) {
|
94
|
+
duckdb_hugeint hugeint = duckdb_value_hugeint(result, col_idx, row_idx);
|
95
|
+
return rb_ary_new3(2, ULL2NUM(hugeint.lower), LL2NUM(hugeint.upper));
|
96
|
+
}
|
97
|
+
|
98
|
+
static VALUE to_ruby_obj_decimal(duckdb_result *result, idx_t col_idx, idx_t row_idx) {
|
99
|
+
duckdb_decimal decimal = duckdb_value_decimal(result, col_idx, row_idx);
|
100
|
+
return rb_ary_new3(4, ULL2NUM(decimal.value.lower), LL2NUM(decimal.value.upper), UINT2NUM(decimal.width), UINT2NUM(decimal.scale));
|
101
|
+
}
|
102
|
+
|
88
103
|
static VALUE to_ruby_obj_float(duckdb_result *result, idx_t col_idx, idx_t row_idx) {
|
89
104
|
float fval = duckdb_value_float(result, col_idx, row_idx);
|
90
105
|
return DBL2NUM(fval);
|
@@ -255,6 +270,20 @@ static VALUE duckdb_result__to_bigint(VALUE oDuckDBResult, VALUE row_idx, VALUE
|
|
255
270
|
return to_ruby_obj_bigint(&(ctx->result), NUM2LL(col_idx), NUM2LL(row_idx));
|
256
271
|
}
|
257
272
|
|
273
|
+
static VALUE duckdb_result___to_hugeint_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx) {
|
274
|
+
rubyDuckDBResult *ctx;
|
275
|
+
TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx);
|
276
|
+
|
277
|
+
return to_ruby_obj_hugeint(&(ctx->result), NUM2LL(col_idx), NUM2LL(row_idx));
|
278
|
+
}
|
279
|
+
|
280
|
+
static VALUE duckdb_result___to_decimal_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx) {
|
281
|
+
rubyDuckDBResult *ctx;
|
282
|
+
TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx);
|
283
|
+
|
284
|
+
return to_ruby_obj_decimal(&(ctx->result), NUM2LL(col_idx), NUM2LL(row_idx));
|
285
|
+
}
|
286
|
+
|
258
287
|
static VALUE duckdb_result__to_float(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx) {
|
259
288
|
rubyDuckDBResult *ctx;
|
260
289
|
TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx);
|
@@ -295,6 +324,30 @@ static VALUE duckdb_result__to_string(VALUE oDuckDBResult, VALUE row_idx, VALUE
|
|
295
324
|
return Qnil;
|
296
325
|
}
|
297
326
|
|
327
|
+
static VALUE duckdb_result__to_string_internal(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx) {
|
328
|
+
rubyDuckDBResult *ctx;
|
329
|
+
#ifdef HAVE_DUCKDB_H_GE_V060
|
330
|
+
duckdb_string p;
|
331
|
+
#else
|
332
|
+
char *p;
|
333
|
+
#endif
|
334
|
+
VALUE obj;
|
335
|
+
TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx);
|
336
|
+
|
337
|
+
#ifdef HAVE_DUCKDB_H_GE_V060
|
338
|
+
p = duckdb_value_string_internal(&(ctx->result), NUM2LL(col_idx), NUM2LL(row_idx));
|
339
|
+
if (p.data) {
|
340
|
+
obj = rb_utf8_str_new(p.data, p.size);
|
341
|
+
#else
|
342
|
+
p = duckdb_value_varchar_internal(&(ctx->result), NUM2LL(col_idx), NUM2LL(row_idx));
|
343
|
+
if (p) {
|
344
|
+
obj = rb_utf8_str_new_cstr(p);
|
345
|
+
#endif
|
346
|
+
return obj;
|
347
|
+
}
|
348
|
+
return Qnil;
|
349
|
+
}
|
350
|
+
|
298
351
|
static VALUE duckdb_result__to_blob(VALUE oDuckDBResult, VALUE row_idx, VALUE col_idx) {
|
299
352
|
rubyDuckDBResult *ctx;
|
300
353
|
TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx);
|
@@ -365,9 +418,12 @@ void init_duckdb_result(void) {
|
|
365
418
|
rb_define_private_method(cDuckDBResult, "_to_utinyint", duckdb_result__to_utinyint, 2);
|
366
419
|
rb_define_private_method(cDuckDBResult, "_to_integer", duckdb_result__to_integer, 2);
|
367
420
|
rb_define_private_method(cDuckDBResult, "_to_bigint", duckdb_result__to_bigint, 2);
|
421
|
+
rb_define_private_method(cDuckDBResult, "__to_hugeint_internal", duckdb_result___to_hugeint_internal, 2);
|
422
|
+
rb_define_private_method(cDuckDBResult, "__to_decimal_internal", duckdb_result___to_decimal_internal, 2);
|
368
423
|
rb_define_private_method(cDuckDBResult, "_to_float", duckdb_result__to_float, 2);
|
369
424
|
rb_define_private_method(cDuckDBResult, "_to_double", duckdb_result__to_double, 2);
|
370
425
|
rb_define_private_method(cDuckDBResult, "_to_string", duckdb_result__to_string, 2);
|
426
|
+
rb_define_private_method(cDuckDBResult, "_to_string_internal", duckdb_result__to_string_internal, 2);
|
371
427
|
rb_define_private_method(cDuckDBResult, "_to_blob", duckdb_result__to_blob, 2);
|
372
428
|
rb_define_private_method(cDuckDBResult, "_enum_internal_type", duckdb_result__enum_internal_type, 1);
|
373
429
|
rb_define_private_method(cDuckDBResult, "_enum_dictionary_size", duckdb_result__enum_dictionary_size, 1);
|
data/lib/duckdb/version.rb
CHANGED
data/lib/duckdb.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duckdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masaki Suketa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/duckdb/connection.rb
|
120
120
|
- lib/duckdb/converter.rb
|
121
121
|
- lib/duckdb/database.rb
|
122
|
+
- lib/duckdb/library_version.rb
|
122
123
|
- lib/duckdb/prepared_statement.rb
|
123
124
|
- lib/duckdb/result.rb
|
124
125
|
- lib/duckdb/version.rb
|
@@ -137,14 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
138
|
requirements:
|
138
139
|
- - ">="
|
139
140
|
- !ruby/object:Gem::Version
|
140
|
-
version: 2.
|
141
|
+
version: 2.7.0
|
141
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
143
|
requirements:
|
143
144
|
- - ">="
|
144
145
|
- !ruby/object:Gem::Version
|
145
146
|
version: '0'
|
146
147
|
requirements: []
|
147
|
-
rubygems_version: 3.4.
|
148
|
+
rubygems_version: 3.4.6
|
148
149
|
signing_key:
|
149
150
|
specification_version: 4
|
150
151
|
summary: This module is Ruby binding for DuckDB database engine.
|