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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a27e917703a870dba56470e00cb4ae70f5b62dcb256d39da63cc88a0a888b5e
4
- data.tar.gz: 8dc0b2f58cc6345540d62cdee126951de02e83b61d555da747ebc7f9a3d486a8
3
+ metadata.gz: 743c5cd93509adeb83483bc5dfc363ef65a4b92aacc1c72b0845c2a5d722c913
4
+ data.tar.gz: 93f5aac3993b0b1cd1512e1dd32fbcab216e6e2ab9b94df229b29d36c1bcd89e
5
5
  SHA512:
6
- metadata.gz: 45ee35ed43062e134e6c672f16ad92c99a7552607ed221795be8a22bc1b0b33b58b946e323cffc07fb032ad00833f1ec6b667fdceac537cf2dd1968663c44dd7
7
- data.tar.gz: b57c3c55f4cda72fddf72909b16182448b5466c0d14b59afc2776f312c8640af6353786e862a086d782fe9f6f4670fd7d8f6d03fe6f8be47464b3aadcf039d7c
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.x', '2.6.x']
12
- duckdb: ['0.1.5']
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@v1
15
+ - uses: actions/checkout@v2
16
16
 
17
17
  - name: Set up Ruby
18
- uses: actions/setup-ruby@v1
18
+ uses: ruby/setup-ruby@v1
19
19
  with:
20
20
  ruby-version: ${{ matrix.ruby }}
21
21
 
22
- - name: duckdb 0.1.5 cache
23
- id: duckdb-cache-v0_1_5
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.5
27
- key: ${{ runner.os }}-duckdb-v0_1_5_001
26
+ path: duckdb-v0.1.8
27
+ key: ${{ runner.os }}-duckdb-v0_1_8_001
28
28
  restore-keys: |
29
- ${{ runner.os }}-duckdb-v0_1_5
29
+ ${{ runner.os }}-duckdb-v0_1_8
30
30
 
31
- - name: Build duckdb 0.1.5
32
- if: steps.duckdb-cache-v0_1_5.outputs.cache-hit != 'true'
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.5 https://github.com/cwida/duckdb.git duckdb-tmp-v0.1.5
35
- cd duckdb-tmp-v0.1.5 && make && cd ..
36
- rm -rf duckdb-v0.1.5
37
- mkdir -p duckdb-v0.1.5/build/release/src duckdb-v0.1.5/src
38
- cp -rip duckdb-tmp-v0.1.5/build/release/src/*.so duckdb-v0.1.5/build/release/src
39
- cp -rip duckdb-tmp-v0.1.5/src/include duckdb-v0.1.5/src/
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:
@@ -2,16 +2,17 @@ language: ruby
2
2
  cache:
3
3
  bundler: true
4
4
  directories:
5
- - ${HOME}/duckdb-v0.1.5
5
+ - ${HOME}/duckdb-v0.1.9
6
6
  before_install:
7
7
  - yes | gem update --system
8
- - if [[ ! -d ${HOME}/duckdb-v0.1.5/build ]]; then cd ${HOME} && git clone -b v0.1.5 https://github.com/cwida/duckdb.git duckdb-v0.1.5 && cd duckdb-v0.1.5 && make && cd ${TRAVIS_BUILD_DIR}; fi
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.5
11
+ - DUCKDB_VERSION=0.1.9
12
12
  rvm:
13
- - 2.5.7
14
- - 2.6.5
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/
@@ -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
+ ```
@@ -1,32 +1,35 @@
1
- lib = File.expand_path("lib", __dir__)
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 "duckdb/version"
5
+ require 'duckdb/version'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = "duckdb"
8
+ spec.name = 'duckdb'
7
9
  spec.version = DuckDB::VERSION
8
- spec.authors = ["Masaki Suketa"]
9
- spec.email = ["masaki.suketa@nifty.ne.jp"]
10
+ spec.authors = ['Masaki Suketa']
11
+ spec.email = ['masaki.suketa@nifty.ne.jp']
10
12
 
11
- spec.summary = %q{This module is Ruby binding for DuckDB database engine.}
12
- spec.description = "This module is Ruby binding for DuckDB database engine. You must have the DuckDB engine installed to build/use this module."
13
- spec.homepage = "https://github.com/suketa/ruby-duckdb"
14
- spec.license = "MIT"
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["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = "https://github.com/suketa/ruby-duckdb"
18
- spec.metadata["changelog_uri"] = "https://github.com/suketa/ruby-duckdb/blob/master/CHANGELOG.md"
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 = Dir.chdir(File.expand_path('..', __FILE__)) do
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 = ["lib"]
26
- spec.extensions = ["ext/duckdb/extconf.rb"]
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 "bundler", "~> 2.0"
29
- spec.add_development_dependency "rake", "~> 13.0"
30
- spec.add_development_dependency "rake-compiler"
31
- spec.add_development_dependency "minitest", "~> 5.0"
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
@@ -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
- rb_define_method(cDuckDBConnection, "connect", duckdb_connection_connect, 1);
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
  }
@@ -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, "open", duckdb_database_s_open, -1);
68
- rb_define_method(cDuckDBDatabase, "connect", duckdb_database_connect, 0);
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
  }
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module DuckDB
2
2
  # The version string of ruby-duckdb.
3
3
  # Currently, ruby-duckdb is NOT semantic versioning.
4
- VERSION = '0.0.7'.freeze
4
+ VERSION = '0.0.8'.freeze
5
5
  end
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.7
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-03-07 00:00:00.000000000 Z
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: rake
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '13.0'
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: '13.0'
40
+ version: '5.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake-compiler
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: minitest
56
+ name: rake-compiler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '5.0'
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: '5.0'
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: '0'
124
+ version: 2.4.0
125
125
  required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="