vertica 0.9.0.beta2 → 0.9.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +3 -1
- data/Gemfile.lock +1 -1
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/lib/vertica/column.rb +2 -2
- data/lib/vertica/connection.rb +22 -11
- data/lib/vertica/messages/message.rb +33 -1
- data/lib/vertica.rb +25 -47
- data/test/functional/query_test.rb +10 -10
- data/test/test_helper.rb +1 -2
- data/test/unit/backend_message_test.rb +3 -0
- data/test/unit/quoting_test.rb +31 -0
- metadata +9 -73
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -10,15 +10,12 @@ begin
|
|
10
10
|
|
11
11
|
gem.email = 'sprsquish@gmail.com'
|
12
12
|
gem.homepage = 'http://github.com/sprsquish/vertica'
|
13
|
-
gem.authors = ['Jeff Smick', 'Matt Bauer']
|
13
|
+
gem.authors = ['Jeff Smick', 'Matt Bauer', 'Willem van Bergen']
|
14
14
|
|
15
15
|
gem.files = FileList["[A-Z]*", 'lib/**/*.rb'].to_a
|
16
16
|
|
17
17
|
gem.test_files = FileList['test/**/*.rb']
|
18
18
|
|
19
|
-
gem.add_development_dependency 'jeweler'
|
20
|
-
gem.add_development_dependency 'rake'
|
21
|
-
|
22
19
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
23
20
|
end
|
24
21
|
|
@@ -34,21 +31,6 @@ Rake::TestTask.new(:test) do |test|
|
|
34
31
|
test.verbose = true
|
35
32
|
end
|
36
33
|
|
37
|
-
# begin
|
38
|
-
# require 'rcov/rcovtask'
|
39
|
-
# Rcov::RcovTask.new do |test|
|
40
|
-
# test.libs << 'spec'
|
41
|
-
# test.pattern = 'spec/**/*_spec.rb'
|
42
|
-
# test.rcov_opts += ['--exclude \/Library\/Ruby,spec\/', '--xrefs']
|
43
|
-
# test.verbose = true
|
44
|
-
# end
|
45
|
-
# rescue LoadError
|
46
|
-
# task :rcov do
|
47
|
-
# abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
48
|
-
# end
|
49
|
-
# end
|
50
|
-
|
51
|
-
|
52
34
|
begin
|
53
35
|
require 'yard'
|
54
36
|
YARD::Rake::YardocTask.new do |t|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.0.
|
1
|
+
0.9.0.beta3
|
data/lib/vertica/column.rb
CHANGED
@@ -13,7 +13,7 @@ module Vertica
|
|
13
13
|
[:record, nil],
|
14
14
|
[:unknown, nil],
|
15
15
|
[:bool, lambda { |s| s == 't' }],
|
16
|
-
[:
|
16
|
+
[:integer, lambda { |s| s.to_i }],
|
17
17
|
[:float, lambda { |s| s.to_f }],
|
18
18
|
[:char, nil],
|
19
19
|
[:varchar, nil],
|
@@ -23,7 +23,7 @@ module Vertica
|
|
23
23
|
[:timestamp_tz, lambda { |s| DateTime.parse(s, true) }],
|
24
24
|
[:interval, nil],
|
25
25
|
[:time_tz, nil],
|
26
|
-
[:numeric, lambda { |s| s
|
26
|
+
[:numeric, lambda { |s| BigDecimal.new(s) }],
|
27
27
|
[:bytea, nil],
|
28
28
|
[:rle_tuple, nil]
|
29
29
|
]
|
data/lib/vertica/connection.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'socket'
|
2
|
+
|
1
3
|
module Vertica
|
2
4
|
class Connection
|
3
5
|
|
@@ -9,7 +11,7 @@ module Vertica
|
|
9
11
|
|
10
12
|
attr_reader :options, :notices, :transaction_status, :backend_pid, :backend_key, :notifications, :parameters
|
11
13
|
|
12
|
-
attr_accessor :row_style
|
14
|
+
attr_accessor :row_style, :debug
|
13
15
|
|
14
16
|
def self.cancel(existing_conn)
|
15
17
|
conn = self.new(existing_conn.options.merge(:skip_startup => true))
|
@@ -21,7 +23,9 @@ module Vertica
|
|
21
23
|
def initialize(options = {})
|
22
24
|
reset_values
|
23
25
|
|
24
|
-
@options =
|
26
|
+
@options = {}
|
27
|
+
options.each { |key, value| @options[key.to_s.to_sym] = value }
|
28
|
+
|
25
29
|
@notices = []
|
26
30
|
|
27
31
|
@row_style = @options[:row_style] ? @options[:row_style] : :hash
|
@@ -37,19 +41,20 @@ module Vertica
|
|
37
41
|
|
38
42
|
def socket
|
39
43
|
@socket ||= begin
|
40
|
-
|
44
|
+
raw_socket = TCPSocket.new(@options[:host], @options[:port].to_s)
|
41
45
|
if @options[:ssl]
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
46
|
+
require 'openssl/ssl'
|
47
|
+
raw_socket.write Messages::SslRequest.new.to_bytes
|
48
|
+
if raw_socket.read(1) == 'S'
|
49
|
+
raw_socket = OpenSSL::SSL::SSLSocket.new(raw_socket, OpenSSL::SSL::SSLContext.new)
|
50
|
+
raw_socket.sync = true
|
51
|
+
raw_socket.connect
|
47
52
|
else
|
48
53
|
raise Error::ConnectionError.new("SSL requested but server doesn't support it.")
|
49
54
|
end
|
50
55
|
end
|
51
56
|
|
52
|
-
|
57
|
+
raw_socket
|
53
58
|
end
|
54
59
|
end
|
55
60
|
|
@@ -67,6 +72,7 @@ module Vertica
|
|
67
72
|
|
68
73
|
def write(message)
|
69
74
|
raise ArgumentError, "invalid message: (#{message.inspect})" unless message.respond_to?(:to_bytes)
|
75
|
+
puts "=> #{message.inspect}" if @debug
|
70
76
|
socket.write message.to_bytes
|
71
77
|
end
|
72
78
|
|
@@ -139,7 +145,9 @@ module Vertica
|
|
139
145
|
type = read_bytes(1)
|
140
146
|
size = read_bytes(4).unpack('N').first
|
141
147
|
raise Vertica::Error::MessageError.new("Bad message size: #{size}.") unless size >= 4
|
142
|
-
Messages::BackendMessage.factory type, read_bytes(size - 4)
|
148
|
+
msg = Messages::BackendMessage.factory type, read_bytes(size - 4)
|
149
|
+
puts "<= #{msg.inspect}" if @debug
|
150
|
+
return msg
|
143
151
|
end
|
144
152
|
|
145
153
|
|
@@ -220,6 +228,9 @@ module Vertica
|
|
220
228
|
@field_descriptions = []
|
221
229
|
@field_values = []
|
222
230
|
end
|
223
|
-
|
224
231
|
end
|
225
232
|
end
|
233
|
+
|
234
|
+
require 'vertica/column'
|
235
|
+
require 'vertica/result'
|
236
|
+
require 'vertica/messages/message'
|
@@ -40,6 +40,38 @@ module Vertica
|
|
40
40
|
message_string ''
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
44
43
|
end
|
45
44
|
end
|
45
|
+
|
46
|
+
require 'vertica/messages/backend_messages/authentication'
|
47
|
+
require 'vertica/messages/backend_messages/backend_key_data'
|
48
|
+
require 'vertica/messages/backend_messages/bind_complete'
|
49
|
+
require 'vertica/messages/backend_messages/close_complete'
|
50
|
+
require 'vertica/messages/backend_messages/command_complete'
|
51
|
+
require 'vertica/messages/backend_messages/data_row'
|
52
|
+
require 'vertica/messages/backend_messages/empty_query_response'
|
53
|
+
require 'vertica/messages/backend_messages/notice_response'
|
54
|
+
require 'vertica/messages/backend_messages/error_response'
|
55
|
+
require 'vertica/messages/backend_messages/no_data'
|
56
|
+
require 'vertica/messages/backend_messages/notification_response'
|
57
|
+
require 'vertica/messages/backend_messages/parameter_description'
|
58
|
+
require 'vertica/messages/backend_messages/parameter_status'
|
59
|
+
require 'vertica/messages/backend_messages/parse_complete'
|
60
|
+
require 'vertica/messages/backend_messages/portal_suspended'
|
61
|
+
require 'vertica/messages/backend_messages/ready_for_query'
|
62
|
+
require 'vertica/messages/backend_messages/row_description'
|
63
|
+
require 'vertica/messages/backend_messages/unknown'
|
64
|
+
|
65
|
+
require 'vertica/messages/frontend_messages/bind'
|
66
|
+
require 'vertica/messages/frontend_messages/cancel_request'
|
67
|
+
require 'vertica/messages/frontend_messages/close'
|
68
|
+
require 'vertica/messages/frontend_messages/describe'
|
69
|
+
require 'vertica/messages/frontend_messages/execute'
|
70
|
+
require 'vertica/messages/frontend_messages/flush'
|
71
|
+
require 'vertica/messages/frontend_messages/parse'
|
72
|
+
require 'vertica/messages/frontend_messages/password'
|
73
|
+
require 'vertica/messages/frontend_messages/query'
|
74
|
+
require 'vertica/messages/frontend_messages/ssl_request'
|
75
|
+
require 'vertica/messages/frontend_messages/startup'
|
76
|
+
require 'vertica/messages/frontend_messages/sync'
|
77
|
+
require 'vertica/messages/frontend_messages/terminate'
|
data/lib/vertica.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'bigdecimal'
|
3
|
+
|
1
4
|
module Vertica
|
5
|
+
|
2
6
|
class Error < StandardError
|
3
7
|
class ConnectionError < Error; end
|
4
8
|
class MessageError < Error; end
|
@@ -11,52 +15,26 @@ module Vertica
|
|
11
15
|
def self.connect(*args)
|
12
16
|
Connection.new(*args)
|
13
17
|
end
|
18
|
+
|
19
|
+
def self.quote(value)
|
20
|
+
case value
|
21
|
+
when nil then 'NULL'
|
22
|
+
when false then 'FALSE'
|
23
|
+
when true then 'TRUE'
|
24
|
+
when DateTime then value.strftime("'%Y-%m-%d %H:%M:%S'::timestamp")
|
25
|
+
when Time then value.strftime("'%Y-%m-%d %H:%M:%S'::timestamp")
|
26
|
+
when Date then value.strftime("'%Y-%m-%d'::date")
|
27
|
+
when String then "'#{value.gsub(/'/, "''")}'"
|
28
|
+
when BigDecimal then value.to_s('F')
|
29
|
+
when Numeric then value.to_s
|
30
|
+
when Array then value.map { |v| self.quote(v) }.join(', ')
|
31
|
+
else self.quote(value.to_s)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.quote_identifier(identifier)
|
36
|
+
"\"#{identifier.to_s.gsub(/"/, '""')}\""
|
37
|
+
end
|
14
38
|
end
|
15
39
|
|
16
|
-
|
17
|
-
socket
|
18
|
-
uri
|
19
|
-
openssl/ssl
|
20
|
-
bigdecimal
|
21
|
-
bigdecimal/util
|
22
|
-
date
|
23
|
-
|
24
|
-
vertica/column
|
25
|
-
vertica/result
|
26
|
-
vertica/connection
|
27
|
-
|
28
|
-
vertica/messages/message
|
29
|
-
|
30
|
-
vertica/messages/backend_messages/authentication
|
31
|
-
vertica/messages/backend_messages/backend_key_data
|
32
|
-
vertica/messages/backend_messages/bind_complete
|
33
|
-
vertica/messages/backend_messages/close_complete
|
34
|
-
vertica/messages/backend_messages/command_complete
|
35
|
-
vertica/messages/backend_messages/data_row
|
36
|
-
vertica/messages/backend_messages/empty_query_response
|
37
|
-
vertica/messages/backend_messages/notice_response
|
38
|
-
vertica/messages/backend_messages/error_response
|
39
|
-
vertica/messages/backend_messages/no_data
|
40
|
-
vertica/messages/backend_messages/notification_response
|
41
|
-
vertica/messages/backend_messages/parameter_description
|
42
|
-
vertica/messages/backend_messages/parameter_status
|
43
|
-
vertica/messages/backend_messages/parse_complete
|
44
|
-
vertica/messages/backend_messages/portal_suspended
|
45
|
-
vertica/messages/backend_messages/ready_for_query
|
46
|
-
vertica/messages/backend_messages/row_description
|
47
|
-
vertica/messages/backend_messages/unknown
|
48
|
-
|
49
|
-
vertica/messages/frontend_messages/bind
|
50
|
-
vertica/messages/frontend_messages/cancel_request
|
51
|
-
vertica/messages/frontend_messages/close
|
52
|
-
vertica/messages/frontend_messages/describe
|
53
|
-
vertica/messages/frontend_messages/execute
|
54
|
-
vertica/messages/frontend_messages/flush
|
55
|
-
vertica/messages/frontend_messages/parse
|
56
|
-
vertica/messages/frontend_messages/password
|
57
|
-
vertica/messages/frontend_messages/query
|
58
|
-
vertica/messages/frontend_messages/ssl_request
|
59
|
-
vertica/messages/frontend_messages/startup
|
60
|
-
vertica/messages/frontend_messages/sync
|
61
|
-
vertica/messages/frontend_messages/terminate
|
62
|
-
].each { |r| require r }
|
40
|
+
require 'vertica/connection'
|
@@ -20,7 +20,7 @@ class QueryTest < Test::Unit::TestCase
|
|
20
20
|
r = @connection.query("SELECT * FROM test_table")
|
21
21
|
assert_equal 1, r.row_count
|
22
22
|
assert_equal 2, r.columns.length
|
23
|
-
assert_equal :
|
23
|
+
assert_equal :integer, r.columns[0].data_type
|
24
24
|
assert_equal :id, r.columns[0].name
|
25
25
|
assert_equal :varchar, r.columns[1].data_type
|
26
26
|
assert_equal :name, r.columns[1].name
|
@@ -33,7 +33,7 @@ class QueryTest < Test::Unit::TestCase
|
|
33
33
|
r = @connection.query("SELECT * FROM test_table")
|
34
34
|
assert_equal 1, r.row_count
|
35
35
|
assert_equal 2, r.columns.length
|
36
|
-
assert_equal :
|
36
|
+
assert_equal :integer, r.columns[0].data_type
|
37
37
|
assert_equal :id, r.columns[0].name
|
38
38
|
assert_equal :varchar, r.columns[1].data_type
|
39
39
|
assert_equal :name, r.columns[1].name
|
@@ -46,7 +46,7 @@ class QueryTest < Test::Unit::TestCase
|
|
46
46
|
r = @connection.query("SELECT * FROM test_table WHERE 1 != 1")
|
47
47
|
assert_equal 0, r.row_count
|
48
48
|
assert_equal 2, r.columns.length
|
49
|
-
assert_equal :
|
49
|
+
assert_equal :integer, r.columns[0].data_type
|
50
50
|
assert_equal :id, r.columns[0].name
|
51
51
|
assert_equal :varchar, r.columns[1].data_type
|
52
52
|
assert_equal :name, r.columns[1].name
|
@@ -57,7 +57,7 @@ class QueryTest < Test::Unit::TestCase
|
|
57
57
|
r = @connection.query("INSERT INTO test_table VALUES (2, 'stefanie')")
|
58
58
|
assert_equal 1, r.row_count
|
59
59
|
assert_equal 1, r.columns.length
|
60
|
-
assert_equal :
|
60
|
+
assert_equal :integer, r.columns[0].data_type
|
61
61
|
assert_equal :OUTPUT, r.columns[0].name
|
62
62
|
assert_equal [{:OUTPUT => 1}], r.rows
|
63
63
|
end
|
@@ -67,7 +67,7 @@ class QueryTest < Test::Unit::TestCase
|
|
67
67
|
r = @connection.query("DELETE FROM test_table WHERE 1 != 1")
|
68
68
|
assert_equal 1, r.row_count
|
69
69
|
assert_equal 1, r.columns.length
|
70
|
-
assert_equal :
|
70
|
+
assert_equal :integer, r.columns[0].data_type
|
71
71
|
assert_equal :OUTPUT, r.columns[0].name
|
72
72
|
assert_equal [{:OUTPUT => 0}], r.rows
|
73
73
|
end
|
@@ -76,7 +76,7 @@ class QueryTest < Test::Unit::TestCase
|
|
76
76
|
r = @connection.query("DELETE FROM test_table WHERE id = 1")
|
77
77
|
assert_equal 1, r.row_count
|
78
78
|
assert_equal 1, r.columns.length
|
79
|
-
assert_equal :
|
79
|
+
assert_equal :integer, r.columns[0].data_type
|
80
80
|
assert_equal :OUTPUT, r.columns[0].name
|
81
81
|
assert_equal [{:OUTPUT => 1}], r.rows
|
82
82
|
end
|
@@ -113,7 +113,7 @@ class QueryTest < Test::Unit::TestCase
|
|
113
113
|
# r = @connection.execute_prepared("my_ps")
|
114
114
|
# assert_equal 1, r.row_count
|
115
115
|
# assert_equal 2, r.columns.length
|
116
|
-
# assert_equal :
|
116
|
+
# assert_equal :integer, r.columns[0].data_type
|
117
117
|
# assert_equal :id, r.columns[0].name
|
118
118
|
# assert_equal :varchar, r.columns[1].data_type
|
119
119
|
# assert_equal :name, r.columns[1].name
|
@@ -126,7 +126,7 @@ class QueryTest < Test::Unit::TestCase
|
|
126
126
|
# r = c.execute_prepared("my_ps", 1)
|
127
127
|
# assert_equal 1, r.row_count
|
128
128
|
# assert_equal 2, r.columns.length
|
129
|
-
# assert_equal :
|
129
|
+
# assert_equal :integer, r.columns[0].data_type
|
130
130
|
# assert_equal 'id', r.columns[0].name
|
131
131
|
# assert_equal :varchar, r.columns[1].data_type
|
132
132
|
# assert_equal 'name', r.columns[1].name
|
@@ -140,7 +140,7 @@ class QueryTest < Test::Unit::TestCase
|
|
140
140
|
# r = c.execute_prepared("my_ps", 1, 3)
|
141
141
|
# assert_equal 1, r.row_count
|
142
142
|
# assert_equal 2, r.columns.length
|
143
|
-
# assert_equal :
|
143
|
+
# assert_equal :integer, r.columns[0].data_type
|
144
144
|
# assert_equal 'id', r.columns[0].name
|
145
145
|
# assert_equal :varchar, r.columns[1].data_type
|
146
146
|
# assert_equal 'name', r.columns[1].name
|
@@ -153,7 +153,7 @@ class QueryTest < Test::Unit::TestCase
|
|
153
153
|
r = @connection.query("SELECT * FROM test_table")
|
154
154
|
assert_equal 1, r.row_count
|
155
155
|
assert_equal 2, r.columns.length
|
156
|
-
assert_equal :
|
156
|
+
assert_equal :integer, r.columns[0].data_type
|
157
157
|
assert_equal :id, r.columns[0].name
|
158
158
|
assert_equal :varchar, r.columns[1].data_type
|
159
159
|
assert_equal :name, r.columns[1].name
|
data/test/test_helper.rb
CHANGED
@@ -6,5 +6,4 @@ require 'test/unit'
|
|
6
6
|
|
7
7
|
require 'vertica'
|
8
8
|
|
9
|
-
|
10
|
-
TEST_CONNECTION_HASH = hash.inject(Hash.new) { |carry, (k, v)| carry[k.to_sym] = v; carry }
|
9
|
+
TEST_CONNECTION_HASH = YAML.load(File.read(File.expand_path("../connection.yml", __FILE__)))
|
@@ -95,6 +95,9 @@ class BackendMessageTest < Test::Unit::TestCase
|
|
95
95
|
|
96
96
|
msg = Vertica::Messages::DataRow.new("\x00\x02\x00\x00\x00\x011\x00\x00\x00\x04matt")
|
97
97
|
assert_equal ['1', 'matt'], msg.values
|
98
|
+
|
99
|
+
msg = Vertica::Messages::DataRow.new("\x00\a\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF")
|
100
|
+
assert_equal [nil,nil,nil,nil,nil,nil,nil], msg.values
|
98
101
|
end
|
99
102
|
|
100
103
|
def test_command_complete_message
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class QuotingTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_quote_identifier
|
6
|
+
assert_equal '"test"', Vertica.quote_identifier(:test)
|
7
|
+
assert_equal '"te""st"', Vertica.quote_identifier('te"st')
|
8
|
+
assert_equal '"te""""st"', Vertica.quote_identifier('te""st')
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_quote
|
12
|
+
assert_equal "'test'", Vertica.quote('test')
|
13
|
+
assert_equal "'te''st'", Vertica.quote("te'st")
|
14
|
+
assert_equal "'te''''st'", Vertica.quote("te''st")
|
15
|
+
assert_equal "'test'", Vertica.quote(:test)
|
16
|
+
|
17
|
+
assert_equal 'NULL', Vertica.quote(nil)
|
18
|
+
assert_equal 'TRUE', Vertica.quote(true)
|
19
|
+
assert_equal 'FALSE', Vertica.quote(false)
|
20
|
+
|
21
|
+
assert_equal '1', Vertica.quote(1)
|
22
|
+
assert_equal '1.1', Vertica.quote(1.1)
|
23
|
+
assert_equal '1.1', Vertica.quote(BigDecimal.new('1.1'))
|
24
|
+
|
25
|
+
assert_equal "'2010-02-27'::date", Vertica.quote(Date.parse('2010-02-27'))
|
26
|
+
assert_equal "'2010-02-27 12:44:25'::timestamp", Vertica.quote(DateTime.parse('2010-02-27 12:44:25'))
|
27
|
+
assert_equal "'2010-02-27 12:44:25'::timestamp", Vertica.quote(Time.parse('2010-02-27 12:44:25'))
|
28
|
+
|
29
|
+
assert_equal "NULL, 1, TRUE, 'test'", Vertica.quote([nil, 1, true, 'test'])
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,33 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vertica
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 9
|
8
|
-
- 0
|
9
|
-
- beta2
|
10
|
-
version: 0.9.0.beta2
|
4
|
+
prerelease: 6
|
5
|
+
version: 0.9.0.beta3
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Jeff Smick
|
14
9
|
- Matt Bauer
|
10
|
+
- Willem van Bergen
|
15
11
|
autorequire:
|
16
12
|
bindir: bin
|
17
13
|
cert_chain: []
|
18
14
|
|
19
|
-
date: 2011-09-
|
15
|
+
date: 2011-09-12 00:00:00 -04:00
|
20
16
|
default_executable:
|
21
17
|
dependencies:
|
22
18
|
- !ruby/object:Gem::Dependency
|
23
|
-
name:
|
19
|
+
name: rake
|
24
20
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
21
|
none: false
|
26
22
|
requirements:
|
27
23
|
- - ">="
|
28
24
|
- !ruby/object:Gem::Version
|
29
|
-
segments:
|
30
|
-
- 0
|
31
25
|
version: "0"
|
32
26
|
type: :runtime
|
33
27
|
prerelease: false
|
@@ -39,64 +33,10 @@ dependencies:
|
|
39
33
|
requirements:
|
40
34
|
- - ">="
|
41
35
|
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 0
|
44
36
|
version: "0"
|
45
|
-
type: :
|
37
|
+
type: :runtime
|
46
38
|
prerelease: false
|
47
39
|
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: jeweler
|
50
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 0
|
57
|
-
version: "0"
|
58
|
-
type: :development
|
59
|
-
prerelease: false
|
60
|
-
version_requirements: *id003
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rake
|
63
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
segments:
|
69
|
-
- 0
|
70
|
-
version: "0"
|
71
|
-
type: :development
|
72
|
-
prerelease: false
|
73
|
-
version_requirements: *id004
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: jeweler
|
76
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
|
-
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
segments:
|
82
|
-
- 0
|
83
|
-
version: "0"
|
84
|
-
type: :development
|
85
|
-
prerelease: false
|
86
|
-
version_requirements: *id005
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: rake
|
89
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
segments:
|
95
|
-
- 0
|
96
|
-
version: "0"
|
97
|
-
type: :development
|
98
|
-
prerelease: false
|
99
|
-
version_requirements: *id006
|
100
40
|
description: Query Vertica with ruby
|
101
41
|
email: sprsquish@gmail.com
|
102
42
|
executables: []
|
@@ -155,6 +95,7 @@ files:
|
|
155
95
|
- test/functional/value_conversion_test.rb
|
156
96
|
- test/test_helper.rb
|
157
97
|
- test/unit/backend_message_test.rb
|
98
|
+
- test/unit/quoting_test.rb
|
158
99
|
has_rdoc: true
|
159
100
|
homepage: http://github.com/sprsquish/vertica
|
160
101
|
licenses: []
|
@@ -169,23 +110,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
110
|
requirements:
|
170
111
|
- - ">="
|
171
112
|
- !ruby/object:Gem::Version
|
172
|
-
segments:
|
173
|
-
- 0
|
174
113
|
version: "0"
|
175
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
115
|
none: false
|
177
116
|
requirements:
|
178
117
|
- - ">"
|
179
118
|
- !ruby/object:Gem::Version
|
180
|
-
segments:
|
181
|
-
- 1
|
182
|
-
- 3
|
183
|
-
- 1
|
184
119
|
version: 1.3.1
|
185
120
|
requirements: []
|
186
121
|
|
187
122
|
rubyforge_project:
|
188
|
-
rubygems_version: 1.
|
123
|
+
rubygems_version: 1.6.2
|
189
124
|
signing_key:
|
190
125
|
specification_version: 3
|
191
126
|
summary: Pure ruby library for interacting with Vertica
|
@@ -195,3 +130,4 @@ test_files:
|
|
195
130
|
- test/functional/value_conversion_test.rb
|
196
131
|
- test/test_helper.rb
|
197
132
|
- test/unit/backend_message_test.rb
|
133
|
+
- test/unit/quoting_test.rb
|