mysql2-cs-bind 0.1.0 → 0.1.1
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/lib/mysql2-cs-bind.rb +16 -15
- data/mysql2-cs-bind.gemspec +1 -2
- data/spec/mysql2/client_spec.rb +4 -17
- data/spec/mysql2/error_spec.rb +0 -32
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3495f65b800c8cddbb748e628a64ed8fca1d9d33766cd1196ed124c87c2b998
|
4
|
+
data.tar.gz: 66d1445f6104b171ec1cb72661f33d75f010a79a557bad875d3d836303d54ed5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 210e1bdf190d73617d5e3df68ecae830acf14d7f78a459c8d1cbbbf514ec4245d87713a38dc7358b9e34a1608d819d243dccdf78c5ed2586d2ccbc991aa53731
|
7
|
+
data.tar.gz: '058ca605f2586f0e3e23a37797f571386792ea8e44145dc4e301ce2de1009d8a4439fb7d8f2f43624bc90faf1b1ff00470971b8e9cb52966ae907cb05a95d476'
|
data/lib/mysql2-cs-bind.rb
CHANGED
@@ -4,13 +4,8 @@ require 'mysql2'
|
|
4
4
|
|
5
5
|
class Mysql2::Client
|
6
6
|
|
7
|
-
def xquery(sql, *args)
|
8
|
-
|
9
|
-
args.pop
|
10
|
-
else
|
11
|
-
{}
|
12
|
-
end
|
13
|
-
if args.size < 1
|
7
|
+
def xquery(sql, *args, **options)
|
8
|
+
if args.empty?
|
14
9
|
query(sql, options)
|
15
10
|
else
|
16
11
|
query(Mysql2::Client.pseudo_bind(sql, args), options)
|
@@ -26,8 +21,11 @@ class Mysql2::Client
|
|
26
21
|
placeholders.push(pos)
|
27
22
|
search_pos = pos + 1
|
28
23
|
end
|
29
|
-
|
30
|
-
|
24
|
+
|
25
|
+
if placeholders.length != values.length &&
|
26
|
+
placeholders.length != (values = values.flatten(1)).length
|
27
|
+
raise ArgumentError, "mismatch between placeholders number and values arguments"
|
28
|
+
end
|
31
29
|
|
32
30
|
while pos = placeholders.pop()
|
33
31
|
rawvalue = values.pop()
|
@@ -43,16 +41,19 @@ class Mysql2::Client
|
|
43
41
|
private
|
44
42
|
|
45
43
|
def self.quote(rawvalue)
|
46
|
-
|
44
|
+
case rawvalue
|
45
|
+
when nil
|
47
46
|
'NULL'
|
48
|
-
|
47
|
+
when true
|
49
48
|
'TRUE'
|
50
|
-
|
49
|
+
when false
|
51
50
|
'FALSE'
|
52
|
-
elsif rawvalue.respond_to?(:strftime)
|
53
|
-
"'#{rawvalue.strftime('%Y-%m-%d %H:%M:%S')}'"
|
54
51
|
else
|
55
|
-
|
52
|
+
if rawvalue.respond_to?(:strftime)
|
53
|
+
"'#{rawvalue.strftime('%Y-%m-%d %H:%M:%S')}'"
|
54
|
+
else
|
55
|
+
"'#{Mysql2::Client.escape(rawvalue.to_s)}'"
|
56
|
+
end
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
data/mysql2-cs-bind.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "mysql2-cs-bind"
|
5
|
-
gem.version = "0.1.
|
5
|
+
gem.version = "0.1.1"
|
6
6
|
gem.authors = ["TAGOMORI Satoshi"]
|
7
7
|
gem.email = ["tagomoris@gmail.com"]
|
8
8
|
gem.homepage = "https://github.com/tagomoris/mysql2-cs-bind"
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.add_runtime_dependency "mysql2"
|
20
20
|
|
21
21
|
# tests
|
22
|
-
gem.add_development_dependency 'eventmachine'
|
23
22
|
gem.add_development_dependency 'rake-compiler', "~> 0.7.7"
|
24
23
|
gem.add_development_dependency 'rake', '0.8.7' # NB: 0.8.7 required by rake-compiler 0.7.9
|
25
24
|
gem.add_development_dependency 'rspec', '2.10.0'
|
data/spec/mysql2/client_spec.rb
CHANGED
@@ -21,7 +21,7 @@ describe Mysql2::Client do
|
|
21
21
|
@klass.pseudo_bind("SELECT x,y,z FROM x WHERE x=?", [1]).should eql("SELECT x,y,z FROM x WHERE x='1'")
|
22
22
|
@klass.pseudo_bind("SELECT x,y,z FROM x WHERE x=? AND y=?", [1, 'X']).should eql("SELECT x,y,z FROM x WHERE x='1' AND y='X'")
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should raise ArgumentError if mismatch exists between placeholders and arguments" do
|
26
26
|
expect {
|
27
27
|
@klass.pseudo_bind("SELECT x,y,z FROM x", [1])
|
@@ -71,23 +71,16 @@ describe Mysql2::Client do
|
|
71
71
|
}.to_not raise_exception(Mysql2::Error)
|
72
72
|
end
|
73
73
|
|
74
|
-
it "should accept an options hash that inherits from Mysql2::Client.default_query_options" do
|
75
|
-
@client.xquery "SELECT ?", 1, :something => :else
|
76
|
-
@client.query_options.should eql(@client.query_options.merge(:something => :else))
|
77
|
-
end
|
78
|
-
|
79
74
|
it "should return results as a hash by default" do
|
80
75
|
@client.xquery("SELECT ?", 1).first.class.should eql(Hash)
|
81
76
|
end
|
82
77
|
|
83
78
|
it "should be able to return results as an array" do
|
84
79
|
@client.xquery("SELECT ?", 1, :as => :array).first.class.should eql(Array)
|
85
|
-
@client.xquery("SELECT ?", 1).each(:as => :array)
|
86
|
-
@client.query("SELECT 1").first.should eql([1])
|
87
|
-
@client.query("SELECT '1'").first.should eql(['1'])
|
80
|
+
@client.xquery("SELECT ?", 1).each(:as => :array).first.class.should eql(Array)
|
88
81
|
@client.xquery("SELECT 1", :as => :array).first.should eql([1])
|
89
|
-
@client.xquery("SELECT ?", 1).first.should eql(['1'])
|
90
|
-
@client.xquery("SELECT ?+1", 1).first.should eql([2.0])
|
82
|
+
@client.xquery("SELECT ?", 1, :as => :array).first.should eql(['1'])
|
83
|
+
@client.xquery("SELECT ?+1", 1, :as => :array).first.should eql([2.0])
|
91
84
|
end
|
92
85
|
|
93
86
|
it "should read multi style args" do
|
@@ -127,10 +120,4 @@ describe Mysql2::Client do
|
|
127
120
|
it "should respond to escape" do
|
128
121
|
Mysql2::Client.should respond_to(:escape)
|
129
122
|
end
|
130
|
-
|
131
|
-
if RUBY_VERSION =~ /1.9/
|
132
|
-
it "should respond to #encoding" do
|
133
|
-
@client.should respond_to(:encoding)
|
134
|
-
end
|
135
|
-
end
|
136
123
|
end
|
data/spec/mysql2/error_spec.rb
CHANGED
@@ -34,36 +34,4 @@ describe Mysql2::Error do
|
|
34
34
|
it "should alias #message to #error" do
|
35
35
|
@error.should respond_to(:error)
|
36
36
|
end
|
37
|
-
|
38
|
-
if RUBY_VERSION =~ /1.9/
|
39
|
-
it "#message encoding should match the connection's encoding, or Encoding.default_internal if set" do
|
40
|
-
if Encoding.default_internal.nil?
|
41
|
-
@error.message.encoding.should eql(@client.encoding)
|
42
|
-
@error2.message.encoding.should eql(@client2.encoding)
|
43
|
-
else
|
44
|
-
@error.message.encoding.should eql(Encoding.default_internal)
|
45
|
-
@error2.message.encoding.should eql(Encoding.default_internal)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "#error encoding should match the connection's encoding, or Encoding.default_internal if set" do
|
50
|
-
if Encoding.default_internal.nil?
|
51
|
-
@error.error.encoding.should eql(@client.encoding)
|
52
|
-
@error2.error.encoding.should eql(@client2.encoding)
|
53
|
-
else
|
54
|
-
@error.error.encoding.should eql(Encoding.default_internal)
|
55
|
-
@error2.error.encoding.should eql(Encoding.default_internal)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
it "#sql_state encoding should match the connection's encoding, or Encoding.default_internal if set" do
|
60
|
-
if Encoding.default_internal.nil?
|
61
|
-
@error.sql_state.encoding.should eql(@client.encoding)
|
62
|
-
@error2.sql_state.encoding.should eql(@client2.encoding)
|
63
|
-
else
|
64
|
-
@error.sql_state.encoding.should eql(Encoding.default_internal)
|
65
|
-
@error2.sql_state.encoding.should eql(Encoding.default_internal)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql2-cs-bind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAGOMORI Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mysql2
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: eventmachine
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake-compiler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
103
|
- !ruby/object:Gem::Version
|
118
104
|
version: '0'
|
119
105
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
106
|
+
rubygems_version: 3.3.0.dev
|
121
107
|
signing_key:
|
122
108
|
specification_version: 4
|
123
109
|
summary: extension for mysql2 to add client-side variable binding
|