db-mariadb 0.3.0 → 0.7.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: d18fa619ccfc3b043299790a3e6a275670ce48614304355e3f75ba5ed1cdc202
4
- data.tar.gz: eb9e90465532de40869b545c1a65158136e2efbedeff6440f061c4f45d486e8d
3
+ metadata.gz: 0a1f813a41ba085973e25fa022a584a0c120f18f12fe594bfaaf017e9472a398
4
+ data.tar.gz: 071c14dabb9d116bc052deba2f6c5271de3a529da85751d4f80896e17b900944
5
5
  SHA512:
6
- metadata.gz: ec5a4ceca8186959f19019e92cc77a53e945e4834f2c7776d60b78688c32d5f614e243a868b19f584e93c70bd8c19360525a1e2b11d9b597a37a83ae247e239b
7
- data.tar.gz: 65b204be2c1c3f4dfa24f114246a2ec32913aceb580c7be40333aafe8c89a5680098612fae30136f8d537821d246ae9bf508def1f367d57db9c0bb59f767bd82
6
+ metadata.gz: b2d0d0378368327366ad5d307a6a512a32e1c583d16aa4ef4c32cc2947b83a3338789f2136a085c04de4cfd90c976ddfd338ef9dcf0ed1470330a6fd3f75610f
7
+ data.tar.gz: 8b57240bc3ae4698c68ad0c6f74bf107a9cd6d3b38ec5be898359fec3a1d966ab42892e18da0e8167d27856165824e236424d607e380a0234a7da47772e78506
data/lib/.DS_Store ADDED
Binary file
data/lib/db/mariadb.rb CHANGED
@@ -24,4 +24,4 @@ require_relative 'mariadb/connection'
24
24
  require_relative 'mariadb/adapter'
25
25
 
26
26
  require 'db/adapters'
27
- DB::Adapters.register(:mysql, DB::MariaDB::Adapter)
27
+ DB::Adapters.register(:mariadb, DB::MariaDB::Adapter)
@@ -24,8 +24,6 @@ require_relative 'connection'
24
24
 
25
25
  module DB
26
26
  module MariaDB
27
- LOCAL = "mysql://localhost/test"
28
-
29
27
  class Adapter
30
28
  def initialize(**options)
31
29
  @options = options
@@ -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
89
  buffer << " BIGINT AUTO_INCREMENT"
79
90
 
80
- if primary_key
91
+ if primary
81
92
  buffer << " 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
@@ -24,6 +24,9 @@ require_relative '../error'
24
24
  module DB
25
25
  module MariaDB
26
26
  module Native
27
+ MYSQL_PROTOCOL_TCP = 1
28
+
29
+ MYSQL_OPT_PROTOCOL = 9
27
30
  MYSQL_OPT_NONBLOCK = 6000
28
31
 
29
32
  MYSQL_WAIT_READ = 1
@@ -70,10 +73,14 @@ module DB
70
73
  end
71
74
 
72
75
  class Connection < FFI::Pointer
73
- def self.connect(io: IO, host: 'localhost', user: nil, password: nil, database: nil, port: 0, unix_socket: nil, client_flags: 0, compression: false, types: DEFAULT_TYPES, **options)
76
+ def self.connect(wrapper: IO, host: 'localhost', username: nil, password: nil, database: nil, port: 0, unix_socket: nil, client_flags: 0, compression: false, types: DEFAULT_TYPES, **options)
74
77
  pointer = Native.mysql_init(nil)
75
78
  Native.mysql_options(pointer, MYSQL_OPT_NONBLOCK, nil)
76
79
 
80
+ # if protocol
81
+ # Native.mysql_options(pointer, MYSQL_OPT_PROTOCOL, FFI::MemoryPointer.new(:uint, protocol))
82
+ # end
83
+
77
84
  client_flags |= CLIENT_MULTI_STATEMENT | CLIENT_MULTI_RESULTS
78
85
 
79
86
  if compression
@@ -82,11 +89,11 @@ module DB
82
89
 
83
90
  result = FFI::MemoryPointer.new(:pointer)
84
91
 
85
- status = Native.mysql_real_connect_start(result, pointer, host, user, password, database, port, unix_socket, client_flags);
92
+ status = Native.mysql_real_connect_start(result, pointer, host, username, password, database, port, unix_socket, client_flags);
93
+
94
+ io = wrapper.new(Native.mysql_get_socket(pointer), "r+")
86
95
 
87
96
  if status > 0
88
- io = IO.new(Native.mysql_get_socket(pointer), "r+")
89
-
90
97
  while status > 0
91
98
  if status & MYSQL_WAIT_READ
92
99
  io.wait_readable
@@ -22,6 +22,9 @@ require_relative '../native'
22
22
 
23
23
  require_relative 'types'
24
24
 
25
+ require 'date'
26
+ require 'json'
27
+
25
28
  module DB
26
29
  module MariaDB
27
30
  module Native
@@ -20,6 +20,6 @@
20
20
 
21
21
  module DB
22
22
  module MariaDB
23
- VERSION = "0.3.0"
23
+ VERSION = "0.7.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db-mariadb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-05 00:00:00.000000000 Z
11
+ date: 2021-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -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.0.3
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.