duckdb 0.0.7 → 0.0.8
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/test_by_github.yml +36 -17
- data/.travis.yml +6 -5
- data/CHANGELOG.md +16 -0
- data/README.md +21 -0
- data/duckdb.gemspec +22 -19
- data/ext/duckdb/connection.c +1 -1
- data/ext/duckdb/database.c +2 -2
- data/lib/duckdb/connection.rb +15 -0
- data/lib/duckdb/database.rb +53 -0
- data/lib/duckdb/version.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 743c5cd93509adeb83483bc5dfc363ef65a4b92aacc1c72b0845c2a5d722c913
|
|
4
|
+
data.tar.gz: 93f5aac3993b0b1cd1512e1dd32fbcab216e6e2ab9b94df229b29d36c1bcd89e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c93239f6fe857b8761fa88a223be2a4b45e883291687feeaf1a2215ab0238d87a04d5d72a8854c2610a3333f6c282e6a17f81baae8fe61d8ebb4ce59801ad5ff
|
|
7
|
+
data.tar.gz: c2b45b34783c366075a42c22765bf2406ebbaa5ee9024b3260003d20be4321b16efc565839f93ec3fd6a6e25582b7c1d12f265d8d56e92003b9eb40e26e51a58
|
|
@@ -8,35 +8,54 @@ jobs:
|
|
|
8
8
|
runs-on: ubuntu-latest
|
|
9
9
|
strategy:
|
|
10
10
|
matrix:
|
|
11
|
-
ruby: ['2.5.
|
|
12
|
-
duckdb: ['0.1.
|
|
11
|
+
ruby: ['2.5.8', '2.6.6', '2.7.1', 'head']
|
|
12
|
+
duckdb: ['0.1.8', '0.1.9']
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v2
|
|
16
16
|
|
|
17
17
|
- name: Set up Ruby
|
|
18
|
-
uses:
|
|
18
|
+
uses: ruby/setup-ruby@v1
|
|
19
19
|
with:
|
|
20
20
|
ruby-version: ${{ matrix.ruby }}
|
|
21
21
|
|
|
22
|
-
- name: duckdb 0.1.
|
|
23
|
-
id: duckdb-cache-
|
|
22
|
+
- name: duckdb 0.1.8 cache
|
|
23
|
+
id: duckdb-cache-v0_1_8
|
|
24
24
|
uses: actions/cache@v1.1.0
|
|
25
25
|
with:
|
|
26
|
-
path: duckdb-v0.1.
|
|
27
|
-
key: ${{ runner.os }}-duckdb-
|
|
26
|
+
path: duckdb-v0.1.8
|
|
27
|
+
key: ${{ runner.os }}-duckdb-v0_1_8_001
|
|
28
28
|
restore-keys: |
|
|
29
|
-
${{ runner.os }}-duckdb-
|
|
29
|
+
${{ runner.os }}-duckdb-v0_1_8
|
|
30
30
|
|
|
31
|
-
- name:
|
|
32
|
-
|
|
31
|
+
- name: duckdb 0.1.9 cache
|
|
32
|
+
id: duckdb-cache-v0_1_9
|
|
33
|
+
uses: actions/cache@v1.1.0
|
|
34
|
+
with:
|
|
35
|
+
path: duckdb-v0.1.9
|
|
36
|
+
key: ${{ runner.os }}-duckdb-v0_1_9_001
|
|
37
|
+
restore-keys: |
|
|
38
|
+
${{ runner.os }}-duckdb-v0_1_9
|
|
39
|
+
|
|
40
|
+
- name: Build duckdb 0.1.8
|
|
41
|
+
if: steps.duckdb-cache-v0_1_8.outputs.cache-hit != 'true'
|
|
42
|
+
run: |
|
|
43
|
+
git clone -b v0.1.8 https://github.com/cwida/duckdb.git duckdb-tmp-v0.1.8
|
|
44
|
+
cd duckdb-tmp-v0.1.8 && make && cd ..
|
|
45
|
+
rm -rf duckdb-v0.1.8
|
|
46
|
+
mkdir -p duckdb-v0.1.8/build/release/src duckdb-v0.1.8/src
|
|
47
|
+
cp -rip duckdb-tmp-v0.1.8/build/release/src/*.so duckdb-v0.1.8/build/release/src
|
|
48
|
+
cp -rip duckdb-tmp-v0.1.8/src/include duckdb-v0.1.8/src/
|
|
49
|
+
|
|
50
|
+
- name: Build duckdb 0.1.9
|
|
51
|
+
if: steps.duckdb-cache-v0_1_9.outputs.cache-hit != 'true'
|
|
33
52
|
run: |
|
|
34
|
-
git clone -b v0.1.
|
|
35
|
-
cd duckdb-tmp-v0.1.
|
|
36
|
-
rm -rf duckdb-v0.1.
|
|
37
|
-
mkdir -p duckdb-v0.1.
|
|
38
|
-
cp -rip duckdb-tmp-v0.1.
|
|
39
|
-
cp -rip duckdb-tmp-v0.1.
|
|
53
|
+
git clone -b v0.1.9 https://github.com/cwida/duckdb.git duckdb-tmp-v0.1.9
|
|
54
|
+
cd duckdb-tmp-v0.1.9 && make && cd ..
|
|
55
|
+
rm -rf duckdb-v0.1.9
|
|
56
|
+
mkdir -p duckdb-v0.1.9/build/release/src duckdb-v0.1.9/src
|
|
57
|
+
cp -rip duckdb-tmp-v0.1.9/build/release/src/*.so duckdb-v0.1.9/build/release/src
|
|
58
|
+
cp -rip duckdb-tmp-v0.1.9/src/include duckdb-v0.1.9/src/
|
|
40
59
|
|
|
41
60
|
- name: Build and test with Rake with Ruby ${{ matrix.ruby }}
|
|
42
61
|
env:
|
data/.travis.yml
CHANGED
|
@@ -2,16 +2,17 @@ language: ruby
|
|
|
2
2
|
cache:
|
|
3
3
|
bundler: true
|
|
4
4
|
directories:
|
|
5
|
-
- ${HOME}/duckdb-v0.1.
|
|
5
|
+
- ${HOME}/duckdb-v0.1.9
|
|
6
6
|
before_install:
|
|
7
7
|
- yes | gem update --system
|
|
8
|
-
- if [[ ! -d ${HOME}/duckdb-v0.1.
|
|
8
|
+
- if [[ ! -d ${HOME}/duckdb-v0.1.9/build ]]; then cd ${HOME} && git clone -b v0.1.9 https://github.com/cwida/duckdb.git duckdb-v0.1.9 && cd duckdb-v0.1.9 && make && cd ${TRAVIS_BUILD_DIR}; fi
|
|
9
9
|
|
|
10
10
|
env:
|
|
11
|
-
- DUCKDB_VERSION=0.1.
|
|
11
|
+
- DUCKDB_VERSION=0.1.9
|
|
12
12
|
rvm:
|
|
13
|
-
- 2.5.
|
|
14
|
-
- 2.6.
|
|
13
|
+
- 2.5.8
|
|
14
|
+
- 2.6.6
|
|
15
15
|
- 2.7.0
|
|
16
|
+
- 2.7.1
|
|
16
17
|
- ruby-head
|
|
17
18
|
script: bundle exec rake -- --with-duckdb-include=${HOME}/duckdb-v${DUCKDB_VERSION}/src/include --with-duckdb-lib=${HOME}/duckdb-v${DUCKDB_VERSION}/build/release/src/
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# ChangeLog
|
|
2
2
|
|
|
3
|
+
## 0.0.8
|
|
4
|
+
|
|
5
|
+
- remove test with Ruby 2.4.10
|
|
6
|
+
- bump DuckDB to v0.1.8
|
|
7
|
+
- bump DuckDB to v0.1.8
|
|
8
|
+
- bump DuckDB to v0.1.7
|
|
9
|
+
- current ruby-duckdb supports DuckDB version 0.1.5 and 0.1.6
|
|
10
|
+
- support Ruby 2.7.1
|
|
11
|
+
- bump DuckDB to v0.1.6
|
|
12
|
+
- current ruby-duckdb supports DuckDB version 0.1.5 and 0.1.6
|
|
13
|
+
- DuckDB::Connection#connect accepts block
|
|
14
|
+
- add DuckDB::Connection#connect
|
|
15
|
+
- DuckDB::Database#connect accepts block
|
|
16
|
+
- DuckDB::Database.open accepts block
|
|
17
|
+
- update duckdb.gemspec, required ruby version >= 2.4.0
|
|
18
|
+
|
|
3
19
|
## 0.0.7
|
|
4
20
|
|
|
5
21
|
- bump DuckDB to v0.1.5
|
data/README.md
CHANGED
|
@@ -42,3 +42,24 @@ result.each do |row|
|
|
|
42
42
|
p row
|
|
43
43
|
end
|
|
44
44
|
```
|
|
45
|
+
|
|
46
|
+
Or, you can use block.
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
require 'duckdb'
|
|
50
|
+
|
|
51
|
+
DuckDB::Database.open do |db|
|
|
52
|
+
db.connect do |con|
|
|
53
|
+
con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))')
|
|
54
|
+
|
|
55
|
+
con.query("INSERT into users VALUES(1, 'Alice')")
|
|
56
|
+
con.query("INSERT into users VALUES(2, 'Bob')")
|
|
57
|
+
con.query("INSERT into users VALUES(3, 'Cathy')")
|
|
58
|
+
|
|
59
|
+
result = con.query('SELECT * from users')
|
|
60
|
+
result.each do |row|
|
|
61
|
+
p row
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
```
|
data/duckdb.gemspec
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require
|
|
5
|
+
require 'duckdb/version'
|
|
4
6
|
|
|
5
7
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
8
|
+
spec.name = 'duckdb'
|
|
7
9
|
spec.version = DuckDB::VERSION
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
10
|
+
spec.authors = ['Masaki Suketa']
|
|
11
|
+
spec.email = ['masaki.suketa@nifty.ne.jp']
|
|
10
12
|
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
13
|
-
spec.homepage =
|
|
14
|
-
spec.license =
|
|
13
|
+
spec.summary = 'This module is Ruby binding for DuckDB database engine.'
|
|
14
|
+
spec.description = 'This module is Ruby binding for DuckDB database engine. You must have the DuckDB engine installed to build/use this module.'
|
|
15
|
+
spec.homepage = 'https://github.com/suketa/ruby-duckdb'
|
|
16
|
+
spec.license = 'MIT'
|
|
15
17
|
|
|
16
|
-
spec.metadata[
|
|
17
|
-
spec.metadata[
|
|
18
|
-
spec.metadata[
|
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/suketa/ruby-duckdb'
|
|
20
|
+
spec.metadata['changelog_uri'] = 'https://github.com/suketa/ruby-duckdb/blob/master/CHANGELOG.md'
|
|
19
21
|
|
|
20
22
|
# Specify which files should be added to the gem when it is released.
|
|
21
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
22
|
-
spec.files
|
|
24
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
23
25
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
24
26
|
end
|
|
25
|
-
spec.require_paths = [
|
|
26
|
-
spec.extensions = [
|
|
27
|
+
spec.require_paths = ['lib']
|
|
28
|
+
spec.extensions = ['ext/duckdb/extconf.rb']
|
|
29
|
+
spec.required_ruby_version = '>= 2.4.0'
|
|
27
30
|
|
|
28
|
-
spec.add_development_dependency
|
|
29
|
-
spec.add_development_dependency
|
|
30
|
-
spec.add_development_dependency
|
|
31
|
-
spec.add_development_dependency
|
|
31
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
32
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
34
|
+
spec.add_development_dependency 'rake-compiler'
|
|
32
35
|
end
|
data/ext/duckdb/connection.c
CHANGED
|
@@ -87,6 +87,6 @@ void init_duckdb_connection(void)
|
|
|
87
87
|
rb_define_alloc_func(cDuckDBConnection, allocate);
|
|
88
88
|
|
|
89
89
|
rb_define_method(cDuckDBConnection, "disconnect", duckdb_connection_disconnect, 0);
|
|
90
|
-
|
|
90
|
+
rb_define_private_method(cDuckDBConnection, "_connect", duckdb_connection_connect, 1);
|
|
91
91
|
rb_define_private_method(cDuckDBConnection, "query_sql", duckdb_connection_query_sql, 1);
|
|
92
92
|
}
|
data/ext/duckdb/database.c
CHANGED
|
@@ -64,7 +64,7 @@ void init_duckdb_database(void)
|
|
|
64
64
|
{
|
|
65
65
|
cDuckDBDatabase = rb_define_class_under(mDuckDB, "Database", rb_cObject);
|
|
66
66
|
rb_define_alloc_func(cDuckDBDatabase, allocate);
|
|
67
|
-
rb_define_singleton_method(cDuckDBDatabase, "
|
|
68
|
-
|
|
67
|
+
rb_define_singleton_method(cDuckDBDatabase, "_open", duckdb_database_s_open, -1);
|
|
68
|
+
rb_define_private_method(cDuckDBDatabase, "_connect", duckdb_database_connect, 0);
|
|
69
69
|
rb_define_method(cDuckDBDatabase, "close", duckdb_database_close, 0);
|
|
70
70
|
}
|
data/lib/duckdb/connection.rb
CHANGED
|
@@ -29,6 +29,21 @@ module DuckDB
|
|
|
29
29
|
stmt.execute
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
#
|
|
33
|
+
# connects DuckDB database
|
|
34
|
+
# The first argument is DuckDB::Database object
|
|
35
|
+
#
|
|
36
|
+
def connect(db)
|
|
37
|
+
conn = _connect(db)
|
|
38
|
+
return conn unless block_given?
|
|
39
|
+
|
|
40
|
+
begin
|
|
41
|
+
yield conn
|
|
42
|
+
ensure
|
|
43
|
+
conn.disconnect
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
32
47
|
alias execute query
|
|
33
48
|
alias open connect
|
|
34
49
|
alias close disconnect
|
data/lib/duckdb/database.rb
CHANGED
|
@@ -20,5 +20,58 @@ module DuckDB
|
|
|
20
20
|
# end
|
|
21
21
|
#
|
|
22
22
|
class Database
|
|
23
|
+
private_class_method :_open
|
|
24
|
+
|
|
25
|
+
class << self
|
|
26
|
+
##
|
|
27
|
+
# Opens database.
|
|
28
|
+
# The first argument is DuckDB database file path to open.
|
|
29
|
+
# If there is no argument, the method opens DuckDB database in memory.
|
|
30
|
+
# The method yields block if block is given.
|
|
31
|
+
#
|
|
32
|
+
# DuckDB::Database.open('duckdb_database.db') #=> DuckDB::Database
|
|
33
|
+
#
|
|
34
|
+
# DuckDB::Database.open #=> opens DuckDB::Database in memory.
|
|
35
|
+
#
|
|
36
|
+
# DuckDB::Database.open do |db|
|
|
37
|
+
# con = db.connect
|
|
38
|
+
# con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))')
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
def open(*args)
|
|
42
|
+
db = _open(*args)
|
|
43
|
+
return db unless block_given?
|
|
44
|
+
|
|
45
|
+
begin
|
|
46
|
+
yield db
|
|
47
|
+
ensure
|
|
48
|
+
db.close
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# connects database.
|
|
55
|
+
#
|
|
56
|
+
# The method yields block and disconnects the database if block given
|
|
57
|
+
#
|
|
58
|
+
# db = DuckDB::Database.open
|
|
59
|
+
#
|
|
60
|
+
# con = db.connect # => DuckDB::Connection
|
|
61
|
+
#
|
|
62
|
+
# db.connect do |con|
|
|
63
|
+
# con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))')
|
|
64
|
+
# end
|
|
65
|
+
#
|
|
66
|
+
def connect
|
|
67
|
+
conn = _connect
|
|
68
|
+
return conn unless block_given?
|
|
69
|
+
|
|
70
|
+
begin
|
|
71
|
+
yield conn
|
|
72
|
+
ensure
|
|
73
|
+
conn.disconnect
|
|
74
|
+
end
|
|
75
|
+
end
|
|
23
76
|
end
|
|
24
77
|
end
|
data/lib/duckdb/version.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.0.
|
|
4
|
+
version: 0.0.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Masaki Suketa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -25,47 +25,47 @@ dependencies:
|
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '2.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: minitest
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '5.0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '5.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rake
|
|
42
|
+
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
47
|
+
version: '13.0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
54
|
+
version: '13.0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: rake-compiler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
68
|
+
version: '0'
|
|
69
69
|
description: This module is Ruby binding for DuckDB database engine. You must have
|
|
70
70
|
the DuckDB engine installed to build/use this module.
|
|
71
71
|
email:
|
|
@@ -121,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
121
121
|
requirements:
|
|
122
122
|
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
124
|
+
version: 2.4.0
|
|
125
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
requirements:
|
|
127
127
|
- - ">="
|