duckdb 1.1.3.0 → 1.2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d9c9c9844335a39c1c154534cb50c031f872679c98eb5434a9d664805091c96
4
- data.tar.gz: ca48e19a321441194515ad781ebcedb5010bca519e53bdfe9469af6a83add301
3
+ metadata.gz: 4ed07310471afbddcd5b4facd1720eeae0868af7d2682754a30361bafdf45b5a
4
+ data.tar.gz: 984fd1ac1d47a72c0d20a2b1225656baf8838a47c70c3edc54d58bde0490cf25
5
5
  SHA512:
6
- metadata.gz: 2fa6587abdac4d639630c0a605704ed76ff5f3373dcf56f83355dcc999913689e6628db690b8004ccdfc510ade6440b7ca088d9e9ac3a71e228a68ce2a8b359f
7
- data.tar.gz: 1776ead93436933f732ec46c573ef7ef056c2cb86b9d601ac6574cf252c0a9774a3f78b464ddb8fe32deb61d5f626f4e6a379276898d08176a429def29f90a10
6
+ metadata.gz: 5e85e65243f72ac9d1d8bab1ec44a18b7ac31dccba3cfd12dc81c075f44ea79592b7357dde7f30b4276fda2eee769aa93986ca216061ea2aa497a7e7038872df
7
+ data.tar.gz: ee8db3baf4385b71e4c4d4765200baacef1df273702281e33809d2b4037bc25b4bae008e0501c178f615ba22f5a1b99021a22d15d5982054dbe675a769ca1cd8
@@ -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,8 +15,8 @@ jobs:
15
15
  runs-on: macos-latest
16
16
  strategy:
17
17
  matrix:
18
- ruby: ['3.1.6', '3.2.6', '3.3.6', '3.4.0-preview2', 'head']
19
- duckdb: ['1.1.3', '1.1.1', '1.0.0']
18
+ ruby: ['3.1.6', '3.2.6', '3.3.6', '3.4.2', 'head']
19
+ duckdb: ['1.2.0', '1.1.3', '1.1.1', '1.0.0']
20
20
 
21
21
  steps:
22
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.6', '3.3.6', '3.4.0-preview2', 'head']
19
- duckdb: ['1.1.3', '1.1.1', '1.0.0']
18
+ ruby: ['3.1.6', '3.2.6', '3.3.6', '3.4.2', 'head']
19
+ duckdb: ['1.2.0', '1.1.3', '1.1.1', '1.0.0']
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.5', '3.3.5', 'ucrt', 'mingw', 'mswin', 'head']
19
- duckdb: ['1.1.3', '1.1.1', '1.0.0']
18
+ ruby: ['3.1.6', '3.2.6', '3.3.6', '3.4.1', 'ucrt', 'mingw', 'mswin', 'head']
19
+ duckdb: ['1.2.0', '1.1.3', '1.1.1', '1.0.0']
20
20
 
21
21
  steps:
22
22
  - uses: actions/checkout@v4
data/.gitignore CHANGED
@@ -16,3 +16,4 @@
16
16
  *.so
17
17
  Makefile
18
18
  ng_test
19
+ /docs/
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
@@ -3,6 +3,55 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  # Unreleased
5
5
 
6
+ # 1.2.0.0 - 2025-02-24
7
+ - bump duckdb to 1.2.0.
8
+ - add `DuckDB::LogicalType` class(Thanks to @otegami).
9
+ - `DuckDB::LogicalType` class is under construction. `DuckDB::LogicalType#type`, `DuckDB::LogicalType#width`,
10
+ `DuckDB::LogicalType#scale`, `DuckDB::LogicalType#child_type`, `DuckDB::LogicalType#size`,
11
+ `DuckDB::LogicalType#key_type`, and `DuckDB::LogicalType#value_type` are available.
12
+ - add `DuckDB::Appender#error_message`.
13
+ - fix error message when `DuckDB::Appender#flush`, `DuckDB::Appender#close`, `DuckDB::Appender#end_row`,
14
+ `DuckDB::Appender#append_bool`, `DuckDB::Appender#append_int8`, `DuckDB::Appender#append_int16`,
15
+ `DuckDB::Appender#append_int32`, `DuckDB::Appender#append_int64`, `DuckDB::Appender#append_uint8` failed.
16
+ - `DuckDB::Appender#begin_row` does nothing. Only returns self. `DuckDB::Appender#end_row` is only required.
17
+ - bump ruby in CI. use 3.4.2 on MacOS and Ubuntu, 3.4.1 on Windows.
18
+
19
+ ## Breaking changes
20
+ - `DuckDB::Result#row_count`, `DuckDB::Result#row_size` are deprecated.
21
+ - `DuckDB::Result#use_chunk_each?`, `DuckDB::Result#use_chunk_each=` are deprecated.
22
+ - `DuckDB::Result#chunk_each` is deprecated.
23
+ - `DuckDB::Result#each` only works at first time because duckdb_chunk_each C-API is deprecated.
24
+ Calling `DuckDB::Result#each` twice or more does not work.
25
+ ```ruby
26
+ result = con.query('SELECT * FROM table')
27
+ result.each do |record|
28
+ p record # <= this works fine.
29
+ end
30
+ # calling each again does not work.
31
+ result.each do |record|
32
+ p record # <= this will not work
33
+ end
34
+ ```
35
+ If you prefer to use `DuckDB::Result#each` multiple times, set `DuckDB::Result.use_chunk_each = true`.
36
+ But this behavior will be removed in the future release.
37
+ ```ruby
38
+ DuckDB::Result.use_chunk_each = true
39
+ result = con.query('SELECT * FROM table')
40
+ result.each do |record|
41
+ p record # <= this works fine.
42
+ end
43
+ # calling each again works.
44
+ result.each do |record|
45
+ p record # <= this works fine.
46
+ end
47
+ ```
48
+ - `DuckDB::Result#streaming?` will be deprecated.
49
+
50
+ # 1.1.3.1 - 2024-11-27
51
+ - fix to `DuckDB::Connection#query` with multiple SQL statements. Calling PreparedStatement#destroy after each statement executed.
52
+ - install valgrind in docker development environment.
53
+ - add `DuckDB::Appender#append_default`.
54
+
6
55
  # 1.1.3.0 - 2024-11-10
7
56
  - add `DuckDB::PreparedStatement#bind_decimal`. (Thanks to @otegami)
8
57
  - bump duckdb to 1.1.3.
data/Dockerfile CHANGED
@@ -1,21 +1,32 @@
1
- ARG RUBY_VERSION=3.3.6
1
+ ARG RUBY_VERSION=3.4.2
2
2
  FROM ruby:${RUBY_VERSION}
3
3
 
4
- ARG DUCKDB_VERSION=1.1.3
4
+ ARG DUCKDB_VERSION=1.2.0
5
+ ARG VALGRIND_VERSION=3.21.0
5
6
 
6
7
  RUN apt update -qq && \
7
- apt install -y build-essential curl git wget
8
+ apt install -y build-essential curl git wget libc6-dbg
8
9
 
9
10
  COPY getduckdb.sh .
10
11
  RUN ./getduckdb.sh
11
12
 
12
- RUN unzip duckdb.zip -d libduckdb
13
- RUN mv libduckdb/duckdb.* /usr/local/include
14
- RUN mv libduckdb/libduckdb.so /usr/local/lib
15
- RUN ldconfig /usr/local/lib
13
+ RUN unzip duckdb.zip -d libduckdb && \
14
+ mv libduckdb/duckdb.* /usr/local/include && \
15
+ mv libduckdb/libduckdb.so /usr/local/lib && \
16
+ ldconfig /usr/local/lib
17
+
18
+ RUN mkdir valgrind-tmp && \
19
+ cd valgrind-tmp && \
20
+ wget https://sourceware.org/pub/valgrind/valgrind-${VALGRIND_VERSION}.tar.bz2 && \
21
+ tar xf valgrind-${VALGRIND_VERSION}.tar.bz2 && \
22
+ cd valgrind-${VALGRIND_VERSION} && \
23
+ ./configure && \
24
+ make -s && \
25
+ make -s install && \
26
+ cd .. && \
27
+ rm -rf /valgrind-tmp
16
28
 
17
29
  COPY . /root/ruby-duckdb
18
30
  WORKDIR /root/ruby-duckdb
19
31
  RUN git config --global --add safe.directory /root/ruby-duckdb
20
- RUN bundle install
21
- RUN rake build
32
+ RUN bundle install && rake build
data/Gemfile.lock CHANGED
@@ -1,31 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- duckdb (1.1.3.0)
4
+ duckdb (1.2.0.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.8)
12
- mini_portile2 (2.8.7)
13
- minitest (5.25.1)
14
- nokogiri (1.16.7)
11
+ bigdecimal (3.1.9)
12
+ mini_portile2 (2.8.8)
13
+ minitest (5.25.4)
14
+ nokogiri (1.18.3)
15
15
  mini_portile2 (~> 2.8.2)
16
16
  racc (~> 1.4)
17
- nokogiri (1.16.7-x86_64-linux)
17
+ nokogiri (1.18.3-aarch64-linux-gnu)
18
+ racc (~> 1.4)
19
+ nokogiri (1.18.3-arm-linux-gnu)
20
+ racc (~> 1.4)
21
+ nokogiri (1.18.3-arm64-darwin)
22
+ racc (~> 1.4)
23
+ nokogiri (1.18.3-x86_64-darwin)
24
+ racc (~> 1.4)
25
+ nokogiri (1.18.3-x86_64-linux-gnu)
18
26
  racc (~> 1.4)
19
27
  racc (1.8.1)
20
28
  rake (13.2.1)
21
- rake-compiler (1.2.8)
29
+ rake-compiler (1.2.9)
22
30
  rake
23
- ruby_memcheck (3.0.0)
31
+ ruby_memcheck (3.0.1)
24
32
  nokogiri
25
- stackprof (0.2.26)
33
+ stackprof (0.2.27)
26
34
 
27
35
  PLATFORMS
28
- ruby
36
+ aarch64-linux
37
+ arm-linux
38
+ arm64-darwin
39
+ x86-linux
40
+ x86_64-darwin
29
41
  x86_64-linux
30
42
 
31
43
  DEPENDENCIES
@@ -39,4 +51,4 @@ DEPENDENCIES
39
51
  stackprof
40
52
 
41
53
  BUNDLED WITH
42
- 2.5.9
54
+ 2.5.22
data/README.md CHANGED
@@ -46,7 +46,7 @@ brew install duckdb
46
46
 
47
47
  Using [Ruby + Devkit](https://rubyinstaller.org/downloads/) is recommended.
48
48
 
49
- 1. Download libduckdb-windows-amd64.zip from [DuckDB](https://github.com/duckdb/duckdb/releases) and extranct it.
49
+ 1. Download libduckdb-windows-amd64.zip from [DuckDB](https://github.com/duckdb/duckdb/releases) and extract it.
50
50
  2. Copy `duckdb.dll` into `C:\Windows\System32`
51
51
 
52
52
  ## How to install
@@ -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
 
@@ -115,7 +117,7 @@ con.query('SELECT * FROM users WHERE name = $name AND email = $email', name: 'Al
115
117
  ```
116
118
  ### Using prepared statement
117
119
 
118
- You can use prepared statement.
120
+ You can use prepared statement. Prepared statement object is created by `Connection#prepare` method or `DuckDB::PreparedStatement.new`.
119
121
 
120
122
  ```ruby
121
123
  stmt = con.prepare('SELECT * FROM users WHERE name = $name AND email = $email')
@@ -125,7 +127,20 @@ stmt = con.prepare('SELECT * FROM users WHERE name = $name AND email = $email')
125
127
  # stmt = DuckDB::PreparedStatement.new(con, 'SELECT * FROM users WHERE name = $name AND email = $email')
126
128
  stmt.bind(name: 'Alice', email: 'alice@example.com')
127
129
  result = stmt.execute
130
+ stmt.destroy
131
+ ```
132
+ You must call `PreparedStatement#destroy` method after using prepared statement. Otherwise, automatically destroyed
133
+ when the PreparedStatement object is garbage collected.
134
+
135
+ Instead of calling `PreparedStatement#destroy`, you can use block.
136
+
137
+ ```ruby
138
+ result = con.prepare('SELECT * FROM users WHERE name = $name AND email = $email') do |stmt|
139
+ stmt.bind(name: 'Alice', email: 'alice@example.com')
140
+ stmt.execute
141
+ end
128
142
  ```
143
+
129
144
  ### Using async query
130
145
 
131
146
  You can use async query.
@@ -205,7 +220,6 @@ def append
205
220
  appender = con.appender('users')
206
221
 
207
222
  10000.times do
208
- appender.begin_row
209
223
  appender.append(1)
210
224
  appender.append('Alice')
211
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'