db-mariadb 0.6.0 → 0.8.3

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: 86a404e12eedc21b57a6de7b9bdbd5233ec8e026f4983425482a6282850b208c
4
- data.tar.gz: cfac0f1fd6b91606ddb9cf50c8bf4fc2a5cdf70ec7227f360b8f447e8cd8ba0f
3
+ metadata.gz: 9aad0e184030772a20c5e6927379a959524a917306ebdb1db4f3208368769976
4
+ data.tar.gz: c52c6a94ab5ddd1051c55cab3462fe865cb1250af99765264caa67860320f677
5
5
  SHA512:
6
- metadata.gz: cebdcc060495de35cc9940d092cc613f598b3d512339b2589e8abdf45ab62c9e38f43c166ddeac76061ec44756dbe33b031db212c264cda2cade1e7eb9d70c28
7
- data.tar.gz: 9df850b4e73f27df943c6154f21c9a870fe8c26bb88a4569ff66449e0cdb3e16f71f6e094c39463dbd0ce1ab86ecf92d6563d9ce771f6292b7c4664ac61aed27
6
+ metadata.gz: 4c68452f96e3b7e886a914e87aa789e9e3986a21b84229d32fa8b068790c40f21d812b6b28ae123506d72846225bbf99986f39220027f28cb7cbb942c213b2bd
7
+ data.tar.gz: 9654fb6d67cbd567076b3bd1a2b86b1e3e93caef68cc56a6fd9f5808706da882c887a7728851b8f5dc051b40e4a81b138fae88d562ed717c05cb596acb626d04
data/lib/.DS_Store ADDED
Binary file
@@ -65,20 +65,33 @@ module DB
65
65
  end
66
66
 
67
67
  def append_identifier(value, buffer = String.new)
68
- buffer << "`" << @native.escape(value) << "`"
68
+ case value
69
+ when Array
70
+ first = true
71
+ value.each do |part|
72
+ buffer << '.' unless first
73
+ first = false
74
+
75
+ buffer << escape_identifier(part)
76
+ end
77
+ else
78
+ buffer << escape_identifier(value)
79
+ end
69
80
 
70
81
  return buffer
71
82
  end
72
83
 
73
- def id_column(name = 'id', primary_key: true)
84
+ def key_column(name = 'id', primary: true, null: false)
74
85
  buffer = String.new
75
86
 
76
87
  append_identifier(name, buffer)
77
88
 
78
- buffer << " BIGINT AUTO_INCREMENT"
89
+ buffer << " BIGINT"
79
90
 
80
- if primary_key
81
- buffer << " PRIMARY KEY"
91
+ if primary
92
+ buffer << " AUTO_INCREMENT PRIMARY KEY"
93
+ elsif !null
94
+ buffer << " NOT NULL"
82
95
  end
83
96
 
84
97
  return buffer
@@ -97,6 +110,12 @@ module DB
97
110
  def next_result
98
111
  @native.next_result
99
112
  end
113
+
114
+ protected
115
+
116
+ def escape_identifier(value)
117
+ "`#{@native.escape(value)}`"
118
+ end
100
119
  end
101
120
  end
102
121
  end
@@ -18,14 +18,40 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
- require 'ffi'
21
+ require 'ffi/module'
22
+ require 'ffi/module/config_tool'
22
23
 
23
24
  module DB
24
25
  module MariaDB
25
26
  module Native
26
- extend FFI::Library
27
+ extend FFI::Module::Library
28
+ extend FFI::Module::Loader
29
+ extend FFI::Module::ConfigTool
27
30
 
28
- ffi_lib 'mariadb'
31
+ ffi_load('mariadb') ||
32
+ ffi_load_using_config_tool(%w{mariadb_config --libs}) ||
33
+ ffi_load_using_config_tool(%w{mysql_config --libs}) ||
34
+ ffi_load_failure(<<~EOF)
35
+ Unable to load libmariadb!
36
+
37
+ ## Ubuntu
38
+
39
+ sudo apt-get install libmariadb-dev
40
+
41
+ ## Arch Linux
42
+
43
+ sudo pacman -S mariadb
44
+
45
+ ## MacPorts
46
+
47
+ sudo port install mariadb-10.5
48
+ sudo port select --set mysql mariadb-10.5
49
+
50
+ ## Homebrew
51
+
52
+ brew install mariadb
53
+
54
+ EOF
29
55
  end
30
56
  end
31
57
  end
@@ -39,32 +39,32 @@ module DB
39
39
  CLIENT_MULTI_STATEMENT = 0x00010000
40
40
  CLIENT_MULTI_RESULTS = 0x00020000
41
41
 
42
- attach_function :mysql_init, [:pointer], :pointer
43
- attach_function :mysql_options, [:pointer, :int, :pointer], :int
44
- attach_function :mysql_get_socket, [:pointer], :int
42
+ ffi_attach_function :mysql_init, [:pointer], :pointer
43
+ ffi_attach_function :mysql_options, [:pointer, :int, :pointer], :int
44
+ ffi_attach_function :mysql_get_socket, [:pointer], :int
45
45
 
46
- attach_function :mysql_real_connect_start, [:pointer, :pointer, :string, :string, :string, :string, :int, :string, :long], :int
47
- attach_function :mysql_real_connect_cont, [:pointer, :pointer, :int], :int
46
+ ffi_attach_function :mysql_real_connect_start, [:pointer, :pointer, :string, :string, :string, :string, :int, :string, :long], :int
47
+ ffi_attach_function :mysql_real_connect_cont, [:pointer, :pointer, :int], :int
48
48
 
49
- attach_function :mysql_real_query_start, [:pointer, :pointer, :string, :ulong], :int
50
- attach_function :mysql_real_query_cont, [:pointer, :pointer, :int], :int
49
+ ffi_attach_function :mysql_real_query_start, [:pointer, :pointer, :string, :ulong], :int
50
+ ffi_attach_function :mysql_real_query_cont, [:pointer, :pointer, :int], :int
51
51
 
52
- attach_function :mysql_use_result, [:pointer], :pointer
53
- attach_function :mysql_next_result, [:pointer], :int
54
- attach_function :mysql_more_results, [:pointer], :int
55
- attach_function :mysql_free_result, [:pointer], :void
52
+ ffi_attach_function :mysql_use_result, [:pointer], :pointer
53
+ ffi_attach_function :mysql_next_result, [:pointer], :int
54
+ ffi_attach_function :mysql_more_results, [:pointer], :int
55
+ ffi_attach_function :mysql_free_result, [:pointer], :void
56
56
 
57
- attach_function :mysql_affected_rows, [:pointer], :uint64
58
- attach_function :mysql_insert_id, [:pointer], :uint64
59
- attach_function :mysql_info, [:pointer], :string
57
+ ffi_attach_function :mysql_affected_rows, [:pointer], :uint64
58
+ ffi_attach_function :mysql_insert_id, [:pointer], :uint64
59
+ ffi_attach_function :mysql_info, [:pointer], :string
60
60
 
61
- attach_function :mysql_close, [:pointer], :void
62
- attach_function :mysql_errno, [:pointer], :uint
63
- attach_function :mysql_error, [:pointer], :string
61
+ ffi_attach_function :mysql_close, [:pointer], :void
62
+ ffi_attach_function :mysql_errno, [:pointer], :uint
63
+ ffi_attach_function :mysql_error, [:pointer], :string
64
64
 
65
- attach_function :mysql_stat, [:pointer], :string
65
+ ffi_attach_function :mysql_stat, [:pointer], :string
66
66
 
67
- attach_function :mysql_real_escape_string, [:pointer, :pointer, :string, :size_t], :size_t
67
+ ffi_attach_function :mysql_real_escape_string, [:pointer, :pointer, :string, :size_t], :size_t
68
68
 
69
69
  module IO
70
70
  def self.new(fd, mode)
@@ -28,7 +28,7 @@ require 'json'
28
28
  module DB
29
29
  module MariaDB
30
30
  module Native
31
- Type = enum(
31
+ Type = ffi_define_enumeration(:field_type, [
32
32
  :decimal,
33
33
  :tiny,
34
34
  :short,
@@ -57,7 +57,7 @@ module DB
57
57
  :var_string,
58
58
  :string,
59
59
  :geometry,
60
- )
60
+ ])
61
61
 
62
62
  DEFAULT_TYPES = {
63
63
  decimal: Types::Decimal,
@@ -23,13 +23,13 @@ require_relative 'field'
23
23
  module DB
24
24
  module MariaDB
25
25
  module Native
26
- attach_function :mysql_fetch_row_start, [:pointer, :pointer], :int
27
- attach_function :mysql_fetch_row_cont, [:pointer, :pointer, :int], :int
26
+ ffi_attach_function :mysql_fetch_row_start, [:pointer, :pointer], :int
27
+ ffi_attach_function :mysql_fetch_row_cont, [:pointer, :pointer, :int], :int
28
28
 
29
- attach_function :mysql_num_rows, [:pointer], :uint64
30
- attach_function :mysql_num_fields, [:pointer], :uint32
29
+ ffi_attach_function :mysql_num_rows, [:pointer], :uint64
30
+ ffi_attach_function :mysql_num_fields, [:pointer], :uint32
31
31
 
32
- attach_function :mysql_fetch_fields, [:pointer], :pointer
32
+ ffi_attach_function :mysql_fetch_fields, [:pointer], :pointer
33
33
 
34
34
  class Result < FFI::Pointer
35
35
  def initialize(connection, types = {}, address)
@@ -109,6 +109,16 @@ module DB
109
109
  @connection.check_error!("Reading recordset")
110
110
  end
111
111
 
112
+ def map(&block)
113
+ results = []
114
+
115
+ self.each do |row|
116
+ results << yield(row)
117
+ end
118
+
119
+ return results
120
+ end
121
+
112
122
  def to_a
113
123
  rows = []
114
124
 
@@ -20,6 +20,6 @@
20
20
 
21
21
  module DB
22
22
  module MariaDB
23
- VERSION = "0.6.0"
23
+ VERSION = "0.8.3"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db-mariadb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-15 00:00:00.000000000 Z
11
+ date: 2021-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ffi
14
+ name: ffi-module
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-io
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +114,7 @@ executables: []
114
114
  extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
+ - lib/.DS_Store
117
118
  - lib/db/mariadb.rb
118
119
  - lib/db/mariadb/adapter.rb
119
120
  - lib/db/mariadb/connection.rb
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  requirements: []
146
- rubygems_version: 3.1.2
147
+ rubygems_version: 3.2.3
147
148
  signing_key:
148
149
  specification_version: 4
149
150
  summary: An event-driven interface for MariaDB and MySQL servers.