duckdb 1.1.3.1 → 1.2.1.0
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/.github/workflows/make_documents.yml +34 -0
- data/.github/workflows/test_on_macos.yml +2 -3
- data/.github/workflows/test_on_ubuntu.yml +2 -2
- data/.github/workflows/test_on_windows.yml +2 -2
- data/.gitignore +1 -0
- data/.rdoc_options +22 -0
- data/CHANGELOG.md +63 -0
- data/Dockerfile +2 -2
- data/Gemfile.lock +14 -12
- data/README.md +2 -1
- data/duckdb.gemspec +1 -0
- data/ext/duckdb/appender.c +140 -173
- data/ext/duckdb/blob.c +3 -0
- data/ext/duckdb/column.c +33 -3
- data/ext/duckdb/config.c +3 -0
- data/ext/duckdb/connection.c +6 -0
- data/ext/duckdb/database.c +6 -0
- data/ext/duckdb/duckdb.c +1 -0
- data/ext/duckdb/error.c +3 -0
- data/ext/duckdb/extconf.rb +5 -8
- data/ext/duckdb/extracted_statements.c +3 -0
- data/ext/duckdb/logical_type.c +323 -0
- data/ext/duckdb/logical_type.h +13 -0
- data/ext/duckdb/pending_result.c +5 -0
- data/ext/duckdb/prepared_statement.c +64 -6
- data/ext/duckdb/result.c +17 -45
- data/ext/duckdb/ruby-duckdb.h +6 -8
- data/lib/duckdb/appender.rb +458 -56
- data/lib/duckdb/column.rb +0 -2
- data/lib/duckdb/interval.rb +12 -10
- data/lib/duckdb/logical_type.rb +110 -0
- data/lib/duckdb/pending_result.rb +1 -1
- data/lib/duckdb/prepared_statement.rb +18 -1
- data/lib/duckdb/result.rb +16 -16
- data/lib/duckdb/version.rb +1 -1
- data/lib/duckdb.rb +1 -0
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8003b16f724b8a5c4863dbc507476601992e002767aa3cf7cfd7d87583265bc
|
4
|
+
data.tar.gz: a82ef0f5617349c568dd2be3cb8ad1deb5bdee8796483e376eaabc266232f280
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8220ad5939d4c60819636488a783118ba8040429348ad157515ea1801fe9462ad20e2fff12440ce3e1ffae642f3d6fca0a02b43b4ed8958a105cfd079f85de47
|
7
|
+
data.tar.gz: f221a85106b80b654750faeb855c51ff760d82082cb86d7c77834c20194ab71b21feff55d883f1d2d13b1dac699bb50ff6fc5473a04db0e50f4dbbfcb1cd5d22
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Deploy RDoc to GitHub Pages
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
deploy:
|
10
|
+
name: Build and Deploy RDoc
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
|
13
|
+
steps:
|
14
|
+
# リポジトリをクローン
|
15
|
+
- name: Checkout code
|
16
|
+
uses: actions/checkout@v3
|
17
|
+
|
18
|
+
# Ruby をセットアップ
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: 3.4
|
23
|
+
|
24
|
+
# RDoc ドキュメントを生成
|
25
|
+
- name: Generate RDoc
|
26
|
+
run: rdoc -o docs
|
27
|
+
|
28
|
+
# GitHub Pages 用にデプロイ
|
29
|
+
- name: Deploy to GitHub Pages
|
30
|
+
uses: peaceiris/actions-gh-pages@v3
|
31
|
+
with:
|
32
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
33
|
+
publish_branch: gh-pages
|
34
|
+
publish_dir: ./docs
|
@@ -15,9 +15,8 @@ jobs:
|
|
15
15
|
runs-on: macos-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
|
19
|
-
|
20
|
-
duckdb: ['1.1.3', '1.1.1', '1.0.0']
|
18
|
+
ruby: ['3.1.6', '3.2.7', '3.3.7', '3.4.2', 'head']
|
19
|
+
duckdb: ['1.2.1', '1.1.3', '1.1.1']
|
21
20
|
|
22
21
|
steps:
|
23
22
|
- uses: actions/checkout@v4
|
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
runs-on: ubuntu-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
ruby: ['3.1.6', '3.2.
|
19
|
-
duckdb: ['1.1
|
18
|
+
ruby: ['3.1.6', '3.2.7', '3.3.7', '3.4.2', 'head']
|
19
|
+
duckdb: ['1.2.1', '1.1.3', '1.1.1']
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v4
|
@@ -15,8 +15,8 @@ jobs:
|
|
15
15
|
runs-on: windows-latest
|
16
16
|
strategy:
|
17
17
|
matrix:
|
18
|
-
ruby: ['3.1.6', '3.2.
|
19
|
-
duckdb: ['1.1
|
18
|
+
ruby: ['3.1.6', '3.2.6', '3.3.6', '3.4.1', 'ucrt', 'mingw', 'mswin', 'head']
|
19
|
+
duckdb: ['1.2.1', '1.1.3', '1.1.1']
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- uses: actions/checkout@v4
|
data/.gitignore
CHANGED
data/.rdoc_options
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
---
|
2
|
+
encoding: UTF-8
|
3
|
+
static_path: []
|
4
|
+
rdoc_include: []
|
5
|
+
charset: UTF-8
|
6
|
+
exclude:
|
7
|
+
- "~\\z"
|
8
|
+
- "\\.orig\\z"
|
9
|
+
- "\\.rej\\z"
|
10
|
+
- "\\.bak\\z"
|
11
|
+
- "\\.gemspec\\z"
|
12
|
+
- "ext/duckdb/extconf.rb"
|
13
|
+
- "Gemfile"
|
14
|
+
- "Gemfile.lock"
|
15
|
+
- "Rakefile"
|
16
|
+
- "getduckdb.sh"
|
17
|
+
- "rdoc.log"
|
18
|
+
- "tmp"
|
19
|
+
- "mkmf.log"
|
20
|
+
- "Dockerfile"
|
21
|
+
- "bin"
|
22
|
+
main_page: "README.md"
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,69 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
# Unreleased
|
5
|
+
|
6
|
+
# 1.2.1.0 - 2025-03-30
|
7
|
+
- bump duckdb v1.2.1 on CI.
|
8
|
+
- drop duckdb v1.0.0.
|
9
|
+
- add `DuckDB::LogicalType` class.
|
10
|
+
- `DuckDB::LogicalType` class is under construction. `DuckDB::LogicalType#member_count`,
|
11
|
+
`DuckDB::LogicalType#member_name_at`, `DuckDB::LogicalType#member_type_at`,
|
12
|
+
`DuckDB::LogicalType#each_member_name`, `DuckDB::LogicalType#each_member_type`,
|
13
|
+
`DuckDB::LogicalType#child_count`, `DuckDB::LogicalType#child_name_at`,
|
14
|
+
`DuckDB::LogicalType#child_type_at`, `DuckDB::LogicalType#each_child_name`, and
|
15
|
+
`DuckDB::LogicalType#each_child_type` are available.
|
16
|
+
- fix error message when `DuckDB::Appender#append_uint16`, `DuckDB::Appender#append_uint32`,
|
17
|
+
`DuckDB::Appender#append_uint64`, `DuckDB::Appender#append_float`, `DuckDB::Appender#append_double`,
|
18
|
+
`DuckDB::Appender#append_varchar`, `DuckDB::Appender#append_varchar_length`,
|
19
|
+
`DuckDB::Appender#append_blob`, `DuckDB::Appender#append_null`, `DuckDB::Appender#append_default`,
|
20
|
+
`DuckDB::Appender#append_date`, `DuckDB::Appender#append_interval`, `DuckDB::Appender#append_time`,
|
21
|
+
`DuckDB::Appender#append_timestamp`, `DuckDB::Appender#append_hugeint` failed.
|
22
|
+
- add `DuckDB::PreparedStatement#bind_uhugeint`.
|
23
|
+
|
24
|
+
# 1.2.0.0 - 2025-02-24
|
25
|
+
- bump duckdb to 1.2.0.
|
26
|
+
- add `DuckDB::LogicalType` class(Thanks to @otegami).
|
27
|
+
- `DuckDB::LogicalType` class is under construction. `DuckDB::LogicalType#type`, `DuckDB::LogicalType#width`,
|
28
|
+
`DuckDB::LogicalType#scale`, `DuckDB::LogicalType#child_type`, `DuckDB::LogicalType#size`,
|
29
|
+
`DuckDB::LogicalType#key_type`, and `DuckDB::LogicalType#value_type` are available.
|
30
|
+
- add `DuckDB::Appender#error_message`.
|
31
|
+
- fix error message when `DuckDB::Appender#flush`, `DuckDB::Appender#close`, `DuckDB::Appender#end_row`,
|
32
|
+
`DuckDB::Appender#append_bool`, `DuckDB::Appender#append_int8`, `DuckDB::Appender#append_int16`,
|
33
|
+
`DuckDB::Appender#append_int32`, `DuckDB::Appender#append_int64`, `DuckDB::Appender#append_uint8` failed.
|
34
|
+
- `DuckDB::Appender#begin_row` does nothing. Only returns self. `DuckDB::Appender#end_row` is only required.
|
35
|
+
- bump ruby in CI. use 3.4.2 on MacOS and Ubuntu, 3.4.1 on Windows.
|
36
|
+
|
37
|
+
## Breaking changes
|
38
|
+
- `DuckDB::Result#row_count`, `DuckDB::Result#row_size` are deprecated.
|
39
|
+
- `DuckDB::Result#use_chunk_each?`, `DuckDB::Result#use_chunk_each=` are deprecated.
|
40
|
+
- `DuckDB::Result#chunk_each` is deprecated.
|
41
|
+
- `DuckDB::Result#each` only works at first time because duckdb_chunk_each C-API is deprecated.
|
42
|
+
Calling `DuckDB::Result#each` twice or more does not work.
|
43
|
+
```ruby
|
44
|
+
result = con.query('SELECT * FROM table')
|
45
|
+
result.each do |record|
|
46
|
+
p record # <= this works fine.
|
47
|
+
end
|
48
|
+
# calling each again does not work.
|
49
|
+
result.each do |record|
|
50
|
+
p record # <= this will not work
|
51
|
+
end
|
52
|
+
```
|
53
|
+
If you prefer to use `DuckDB::Result#each` multiple times, set `DuckDB::Result.use_chunk_each = true`.
|
54
|
+
But this behavior will be removed in the future release.
|
55
|
+
```ruby
|
56
|
+
DuckDB::Result.use_chunk_each = true
|
57
|
+
result = con.query('SELECT * FROM table')
|
58
|
+
result.each do |record|
|
59
|
+
p record # <= this works fine.
|
60
|
+
end
|
61
|
+
# calling each again works.
|
62
|
+
result.each do |record|
|
63
|
+
p record # <= this works fine.
|
64
|
+
end
|
65
|
+
```
|
66
|
+
- `DuckDB::Result#streaming?` will be deprecated.
|
67
|
+
|
5
68
|
# 1.1.3.1 - 2024-11-27
|
6
69
|
- fix to `DuckDB::Connection#query` with multiple SQL statements. Calling PreparedStatement#destroy after each statement executed.
|
7
70
|
- install valgrind in docker development environment.
|
data/Dockerfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,34 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
duckdb (1.1.
|
4
|
+
duckdb (1.2.1.0)
|
5
5
|
bigdecimal (>= 3.1.4)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
benchmark-ips (2.14.0)
|
11
|
-
bigdecimal (3.1.
|
12
|
-
|
13
|
-
|
11
|
+
bigdecimal (3.1.9)
|
12
|
+
mini_portile2 (2.8.8)
|
13
|
+
minitest (5.25.5)
|
14
|
+
nokogiri (1.18.6)
|
15
|
+
mini_portile2 (~> 2.8.2)
|
14
16
|
racc (~> 1.4)
|
15
|
-
nokogiri (1.
|
17
|
+
nokogiri (1.18.6-aarch64-linux-gnu)
|
16
18
|
racc (~> 1.4)
|
17
|
-
nokogiri (1.
|
19
|
+
nokogiri (1.18.6-arm-linux-gnu)
|
18
20
|
racc (~> 1.4)
|
19
|
-
nokogiri (1.
|
21
|
+
nokogiri (1.18.6-arm64-darwin)
|
20
22
|
racc (~> 1.4)
|
21
|
-
nokogiri (1.
|
23
|
+
nokogiri (1.18.6-x86_64-darwin)
|
22
24
|
racc (~> 1.4)
|
23
|
-
nokogiri (1.
|
25
|
+
nokogiri (1.18.6-x86_64-linux-gnu)
|
24
26
|
racc (~> 1.4)
|
25
27
|
racc (1.8.1)
|
26
28
|
rake (13.2.1)
|
27
|
-
rake-compiler (1.2.
|
29
|
+
rake-compiler (1.2.9)
|
28
30
|
rake
|
29
|
-
ruby_memcheck (3.0.
|
31
|
+
ruby_memcheck (3.0.1)
|
30
32
|
nokogiri
|
31
|
-
stackprof (0.2.
|
33
|
+
stackprof (0.2.27)
|
32
34
|
|
33
35
|
PLATFORMS
|
34
36
|
aarch64-linux
|
data/README.md
CHANGED
@@ -65,6 +65,8 @@ gem install duckdb -- --with-duckdb-include=/duckdb_header_directory --with-duck
|
|
65
65
|
|
66
66
|
## Usage
|
67
67
|
|
68
|
+
The followings are some examples, for more detailed information, please refer to the [documentation](https://suketa.github.io/ruby-duckdb/index.html).
|
69
|
+
|
68
70
|
```ruby
|
69
71
|
require 'duckdb'
|
70
72
|
|
@@ -218,7 +220,6 @@ def append
|
|
218
220
|
appender = con.appender('users')
|
219
221
|
|
220
222
|
10000.times do
|
221
|
-
appender.begin_row
|
222
223
|
appender.append(1)
|
223
224
|
appender.append('Alice')
|
224
225
|
appender.end_row
|
data/duckdb.gemspec
CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.homepage = 'https://github.com/suketa/ruby-duckdb'
|
16
16
|
spec.license = 'MIT'
|
17
17
|
|
18
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
18
19
|
spec.metadata['homepage_uri'] = spec.homepage
|
19
20
|
spec.metadata['source_code_uri'] = 'https://github.com/suketa/ruby-duckdb'
|
20
21
|
spec.metadata['changelog_uri'] = 'https://github.com/suketa/ruby-duckdb/blob/master/CHANGELOG.md'
|