mysql_framework 2.0.1 → 2.1.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 +4 -4
- data/lib/mysql_framework/connector.rb +11 -2
- data/lib/mysql_framework/version.rb +1 -1
- data/spec/lib/mysql_framework/connector_spec.rb +27 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f48c69762d95976838c6779c9acfc6591e2113d9a91128f69a2621890332bee0
|
4
|
+
data.tar.gz: 5d9d0250828d1e93626010796f79364d2f23b22554c38f4bda313ca718faffc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e477a4a454360a80a979421aad3ba7db1b7399656062dc7cd129174af1f48953fb3c56d2ad2d959fafbf009a7c1e9f9aa57d34c91c5a06aeb853d0f0e518fb8
|
7
|
+
data.tar.gz: 2c0980c6a0c94718d0df07d56ae1f88367ce8716d5af457b1c9c6526c29878380bbaeaffaca314dcdf4943d1366c27940675d693fdec4fe961fc183e7a6bb3ed
|
@@ -75,10 +75,19 @@ module MysqlFramework
|
|
75
75
|
end
|
76
76
|
|
77
77
|
# This method is called to execute a prepared statement
|
78
|
+
#
|
79
|
+
# @note Ensure we close each statement, otherwise we can run into
|
80
|
+
# a 'Commands out of sync' error if multiple threads are running different
|
81
|
+
# queries at the same time.
|
78
82
|
def execute(query, provided_client = nil)
|
79
83
|
with_client(provided_client) do |client|
|
80
|
-
|
81
|
-
|
84
|
+
begin
|
85
|
+
statement = client.prepare(query.sql)
|
86
|
+
result = statement.execute(*query.params)
|
87
|
+
result.to_a if result
|
88
|
+
ensure
|
89
|
+
statement.close if statement
|
90
|
+
end
|
82
91
|
end
|
83
92
|
end
|
84
93
|
|
@@ -272,6 +272,33 @@ describe MysqlFramework::Connector do
|
|
272
272
|
expect(results.length).to eq(1)
|
273
273
|
expect(results[0][:id]).to eq(guid)
|
274
274
|
end
|
275
|
+
|
276
|
+
it 'does not raise a commands out of sync error' do
|
277
|
+
threads = []
|
278
|
+
threads << Thread.new do
|
279
|
+
350.times do
|
280
|
+
update_query = MysqlFramework::SqlQuery.new.update('gems')
|
281
|
+
.set(updated_at: Time.now)
|
282
|
+
expect { subject.execute(update_query) }.not_to raise_error
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
threads << Thread.new do
|
287
|
+
350.times do
|
288
|
+
select_query = MysqlFramework::SqlQuery.new.select('*').from('demo')
|
289
|
+
expect { subject.execute(select_query) }.not_to raise_error
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
threads << Thread.new do
|
294
|
+
350.times do
|
295
|
+
select_query = MysqlFramework::SqlQuery.new.select('*').from('test')
|
296
|
+
expect { subject.execute(select_query) }.not_to raise_error
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
threads.each(&:join)
|
301
|
+
end
|
275
302
|
end
|
276
303
|
|
277
304
|
describe '#query' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -137,8 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
requirements: []
|
140
|
-
|
141
|
-
rubygems_version: 2.7.7
|
140
|
+
rubygems_version: 3.0.8
|
142
141
|
signing_key:
|
143
142
|
specification_version: 4
|
144
143
|
summary: A lightweight framework to provide managers for working with MySQL.
|