monetdb 0.2.2 → 0.2.3
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 +8 -8
- data/CHANGELOG.rdoc +6 -0
- data/VERSION +1 -1
- data/lib/monetdb.rb +0 -2
- data/lib/monetdb/connection.rb +2 -4
- data/lib/monetdb/connection/logger.rb +12 -0
- data/lib/monetdb/connection/query.rb +10 -2
- data/lib/monetdb/version.rb +1 -1
- data/monetdb.gemspec +0 -2
- data/test/unit/connection/test_logger.rb +35 -0
- data/test/unit/connection/test_query.rb +10 -5
- metadata +5 -16
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZWIxMjU2MTVlNWE5OGI2NmM5OTM5MjljZWVkNTQ2NzViOTUxMDAyOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZmU2YTQ4ZDhkOTk0NGVlMDY0ZTg4ODU4NjA5MThhM2U1YTc1ZjNmZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjJmYzAxZGQ1MmY0ZDk4OWU3MzViNzYyYTNhMTVmYjhiZWEyZWM2YjZlMmYw
|
10
|
+
YWVhOTA5NWM1YWNlZmM3NTc5ZDJhNjQ1MDU4NWJlZTQyYTIwZWEyNzcxNjM4
|
11
|
+
N2VlZTc2ZGY4OGM4N2Y2MjBiYjZiYmFhYzU3Y2JiMzIxNTU2ZmU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDM2MWJlNjg0NTkzNTY5ZjhmNTdhM2E0M2I4MjIzZDYyZjMwMjdjN2VhMmY3
|
14
|
+
OGU1MzQ0YWE2NzczNjhjODAyOTI3MTgyZTExYTc5Yzg1OGEwOGNlN2JkY2Y1
|
15
|
+
NGI2YTg3MjUxYjkxYWFmMWVmNmIyYjY3ZmVmNzE0YzhlMDI1MGU=
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
= MonetDB CHANGELOG
|
2
2
|
|
3
|
+
== Version 0.2.3 (October 22, 2014)
|
4
|
+
|
5
|
+
* Dropped activesupport dependency
|
6
|
+
* Extracted logging related method to MonetDB::Connection::Logger
|
7
|
+
* Logging query info
|
8
|
+
|
3
9
|
== Version 0.2.2 (October 13, 2014)
|
4
10
|
|
5
11
|
* Added MonetDB::Connection#select_values
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/lib/monetdb.rb
CHANGED
data/lib/monetdb/connection.rb
CHANGED
@@ -3,6 +3,7 @@ require "monetdb/connection/io"
|
|
3
3
|
require "monetdb/connection/messages"
|
4
4
|
require "monetdb/connection/setup"
|
5
5
|
require "monetdb/connection/query"
|
6
|
+
require "monetdb/connection/logger"
|
6
7
|
|
7
8
|
module MonetDB
|
8
9
|
class Connection
|
@@ -11,6 +12,7 @@ module MonetDB
|
|
11
12
|
include Messages
|
12
13
|
include Setup
|
13
14
|
include Query
|
15
|
+
include Logger
|
14
16
|
|
15
17
|
Q_TABLE = "1" # SELECT statement
|
16
18
|
Q_UPDATE = "2" # INSERT/UPDATE statement
|
@@ -80,9 +82,5 @@ module MonetDB
|
|
80
82
|
@socket
|
81
83
|
end
|
82
84
|
|
83
|
-
def log(type, msg)
|
84
|
-
MonetDB.logger.send(type, msg) if MonetDB.logger
|
85
|
-
end
|
86
|
-
|
87
85
|
end
|
88
86
|
end
|
@@ -5,16 +5,20 @@ module MonetDB
|
|
5
5
|
def query(statement)
|
6
6
|
raise ConnectionError, "Not connected to server" unless connected?
|
7
7
|
|
8
|
+
start = Time.now
|
9
|
+
|
8
10
|
write "s#{statement};"
|
9
11
|
response = read.split("\n")
|
10
12
|
|
13
|
+
log :info, "\n [1m[35mSQL (#{((Time.now - start) * 1000).round(1)}ms)[0m #{statement}[0m"
|
14
|
+
|
11
15
|
query_header, table_header = extract_headers!(response)
|
12
16
|
|
13
17
|
if query_header[:type] == Q_TABLE
|
14
18
|
unless query_header[:rows] == response.size
|
15
19
|
raise QueryError, "Amount of fetched rows does not match header value (#{response.size} instead of #{query_header[:rows]})"
|
16
20
|
end
|
17
|
-
response = parse_rows(table_header, response.join("\n"))
|
21
|
+
response = parse_rows(query_header, table_header, response.join("\n"))
|
18
22
|
else
|
19
23
|
response = true
|
20
24
|
end
|
@@ -83,14 +87,18 @@ module MonetDB
|
|
83
87
|
{:table_name => table_name, :column_names => column_names, :column_types => column_types, :column_lengths => column_lengths}.freeze
|
84
88
|
end
|
85
89
|
|
86
|
-
def parse_rows(table_header, response)
|
90
|
+
def parse_rows(query_header, table_header, response)
|
91
|
+
start = Time.now
|
87
92
|
column_types = table_header[:column_types]
|
93
|
+
|
88
94
|
response.slice(0..-3).split("\t]\n").collect do |row|
|
89
95
|
parsed, values = [], row.slice(1..-1).split(",\t")
|
90
96
|
values.each_with_index do |value, index|
|
91
97
|
parsed << parse_value(column_types[index], value.strip)
|
92
98
|
end
|
93
99
|
parsed
|
100
|
+
end.tap do
|
101
|
+
log :info, " [1m[36mRUBY (#{((Time.now - start) * 1000).round(1)}ms)[0m [ Rows: #{query_header[:rows]}, Bytesize: #{response.bytesize} bytes ][0m"
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
data/lib/monetdb/version.rb
CHANGED
data/monetdb.gemspec
CHANGED
@@ -15,8 +15,6 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = MonetDB::VERSION
|
17
17
|
|
18
|
-
gem.add_dependency "activesupport"
|
19
|
-
|
20
18
|
gem.add_development_dependency "rake"
|
21
19
|
gem.add_development_dependency "yard"
|
22
20
|
gem.add_development_dependency "pry"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative "../../test_helper"
|
2
|
+
|
3
|
+
module Unit
|
4
|
+
module Connection
|
5
|
+
class TestLogger < MiniTest::Test
|
6
|
+
|
7
|
+
class Connection < SimpleConnection
|
8
|
+
include MonetDB::Connection::Logger
|
9
|
+
end
|
10
|
+
|
11
|
+
describe MonetDB::Connection::Logger do
|
12
|
+
before do
|
13
|
+
@connection = Connection.new
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#log" do
|
17
|
+
describe "when MonetDB.logger" do
|
18
|
+
it "delegates to MonetDB.logger" do
|
19
|
+
(logger = mock).expects(:info, "Hello world!")
|
20
|
+
MonetDB.expects(:logger).returns(logger).twice
|
21
|
+
@connection.send :log, :info, "Hello world!"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "when no MonetDB.logger" do
|
26
|
+
it "does nothing" do
|
27
|
+
assert_nil @connection.send(:log, :info, "Boo!")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -7,6 +7,7 @@ module Unit
|
|
7
7
|
class Connection < SimpleConnection
|
8
8
|
include MonetDB::Connection::Messages
|
9
9
|
include MonetDB::Connection::Query
|
10
|
+
include MonetDB::Connection::Logger
|
10
11
|
end
|
11
12
|
|
12
13
|
describe MonetDB::Connection::Query do
|
@@ -263,19 +264,23 @@ module Unit
|
|
263
264
|
|
264
265
|
describe "#parse_rows" do
|
265
266
|
it "returns an array of hashes" do
|
267
|
+
query_header = {
|
268
|
+
:rows => 2
|
269
|
+
}
|
270
|
+
|
266
271
|
table_header = {
|
267
272
|
:column_types => [:varchar, :date, :double]
|
268
273
|
}
|
269
274
|
|
270
275
|
response = [
|
271
|
-
"[ \"Paul Engel\",\t1982-08-01,\
|
272
|
-
"[ \"Ken Adams\",\t1980-10-
|
276
|
+
"[ \"Paul Engel\",\t1982-08-01,\t1709.34\t]",
|
277
|
+
"[ \"Ken Adams\",\t1980-10-31,\t2003.47\t]"
|
273
278
|
].join("\n")
|
274
279
|
|
275
280
|
assert_equal [
|
276
|
-
["Paul Engel", Date.parse("1982-08-01"),
|
277
|
-
["Ken Adams", Date.parse("1980-10-
|
278
|
-
], @connection.send(:parse_rows, table_header, response)
|
281
|
+
["Paul Engel", Date.parse("1982-08-01"), 1709.34],
|
282
|
+
["Ken Adams", Date.parse("1980-10-31"), 2003.47]
|
283
|
+
], @connection.send(:parse_rows, query_header, table_header, response)
|
279
284
|
end
|
280
285
|
end
|
281
286
|
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monetdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Engel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ! '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ! '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,6 +112,7 @@ files:
|
|
126
112
|
- lib/monetdb.rb
|
127
113
|
- lib/monetdb/connection.rb
|
128
114
|
- lib/monetdb/connection/io.rb
|
115
|
+
- lib/monetdb/connection/logger.rb
|
129
116
|
- lib/monetdb/connection/messages.rb
|
130
117
|
- lib/monetdb/connection/query.rb
|
131
118
|
- lib/monetdb/connection/setup.rb
|
@@ -138,6 +125,7 @@ files:
|
|
138
125
|
- test/test_helper/minitest.rb
|
139
126
|
- test/test_helper/simple_connection.rb
|
140
127
|
- test/unit/connection/test_io.rb
|
128
|
+
- test/unit/connection/test_logger.rb
|
141
129
|
- test/unit/connection/test_messages.rb
|
142
130
|
- test/unit/connection/test_query.rb
|
143
131
|
- test/unit/connection/test_setup.rb
|
@@ -172,6 +160,7 @@ test_files:
|
|
172
160
|
- test/test_helper/minitest.rb
|
173
161
|
- test/test_helper/simple_connection.rb
|
174
162
|
- test/unit/connection/test_io.rb
|
163
|
+
- test/unit/connection/test_logger.rb
|
175
164
|
- test/unit/connection/test_messages.rb
|
176
165
|
- test/unit/connection/test_query.rb
|
177
166
|
- test/unit/connection/test_setup.rb
|