duckdb 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="