cassandra-cql 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/cassandra-cql/result.rb +15 -5
- data/lib/cassandra-cql/statement.rb +1 -1
- data/lib/cassandra-cql/version.rb +1 -1
- data/spec/result_spec.rb +40 -12
- data/spec/statement_spec.rb +8 -0
- metadata +2 -5
data/lib/cassandra-cql/result.rb
CHANGED
@@ -35,8 +35,10 @@ module CassandraCQL
|
|
35
35
|
}
|
36
36
|
end
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
class Result
|
40
|
+
include Enumerable
|
41
|
+
|
40
42
|
attr_reader :result, :schema, :cursor
|
41
43
|
|
42
44
|
def initialize(result)
|
@@ -44,11 +46,11 @@ module CassandraCQL
|
|
44
46
|
@schema = ResultSchema.new(result.schema) if rows?
|
45
47
|
@cursor = 0
|
46
48
|
end
|
47
|
-
|
49
|
+
|
48
50
|
def void?
|
49
51
|
@result.type == CassandraCQL::Thrift::CqlResultType::VOID
|
50
52
|
end
|
51
|
-
|
53
|
+
|
52
54
|
def int?
|
53
55
|
@result.type == CassandraCQL::Thrift::CqlResultType::INT
|
54
56
|
end
|
@@ -61,12 +63,20 @@ module CassandraCQL
|
|
61
63
|
@result.rows.size
|
62
64
|
end
|
63
65
|
|
66
|
+
alias_method :size, :rows
|
67
|
+
alias_method :count, :rows
|
68
|
+
alias_method :length, :rows
|
69
|
+
|
64
70
|
def cursor=(cursor)
|
65
71
|
@cursor = cursor.to_i
|
66
72
|
rescue Exception => e
|
67
73
|
raise Error::InvalidCursor, e.to_s
|
68
74
|
end
|
69
|
-
|
75
|
+
|
76
|
+
def each
|
77
|
+
fetch { |row| yield row }
|
78
|
+
end
|
79
|
+
|
70
80
|
def fetch_row
|
71
81
|
case @result.type
|
72
82
|
when CassandraCQL::Thrift::CqlResultType::ROWS
|
@@ -113,7 +123,7 @@ module CassandraCQL
|
|
113
123
|
end
|
114
124
|
end
|
115
125
|
end
|
116
|
-
|
126
|
+
|
117
127
|
def fetch_array
|
118
128
|
if block_given?
|
119
129
|
while row = fetch_row
|
@@ -90,7 +90,7 @@ module CassandraCQL
|
|
90
90
|
obj.strftime('%Y-%m-%d')
|
91
91
|
elsif obj.kind_of?(Time)
|
92
92
|
(obj.to_f * 1000).to_i
|
93
|
-
elsif obj.kind_of?(UUID)
|
93
|
+
elsif obj.kind_of?(SimpleUUID::UUID)
|
94
94
|
obj.to_guid
|
95
95
|
# There are corner cases where this is an invalid assumption but they are extremely rare.
|
96
96
|
# The alternative is to make the user pack the data on their own .. let's not do that until we have to
|
data/spec/result_spec.rb
CHANGED
@@ -57,30 +57,42 @@ describe "row results" do
|
|
57
57
|
it "should have two rows" do
|
58
58
|
@result.rows.should eq(2)
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
|
+
it "should know size of rows" do
|
62
|
+
@result.size.should eq(2)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should know count of rows" do
|
66
|
+
@result.count.should eq(2)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should know length of rows" do
|
70
|
+
@result.length.should eq(2)
|
71
|
+
end
|
72
|
+
|
61
73
|
context "initialize" do
|
62
74
|
it "should have a cursor set to 0" do
|
63
75
|
@result.instance_variable_get(:@cursor).should eq(0)
|
64
76
|
end
|
65
|
-
|
77
|
+
|
66
78
|
it "should have a result" do
|
67
79
|
@result.instance_variable_get(:@result).should be_kind_of(CassandraCQL::Thrift::CqlResult)
|
68
80
|
end
|
69
81
|
end
|
70
|
-
|
82
|
+
|
71
83
|
context "setting the cursor" do
|
72
84
|
it "should set the cursor" do
|
73
85
|
expect {
|
74
86
|
@result.cursor = 15
|
75
87
|
}.to_not raise_error
|
76
88
|
@result.instance_variable_get(:@cursor).should eq(15)
|
77
|
-
end
|
89
|
+
end
|
78
90
|
|
79
91
|
it "should not set the cursor" do
|
80
92
|
expect {
|
81
93
|
@result.cursor = Object
|
82
94
|
}.to raise_error(CassandraCQL::Error::InvalidCursor)
|
83
|
-
end
|
95
|
+
end
|
84
96
|
end
|
85
97
|
|
86
98
|
context "fetching a single row" do
|
@@ -90,12 +102,12 @@ describe "row results" do
|
|
90
102
|
|
91
103
|
@result.fetch_row.should be_kind_of(Row)
|
92
104
|
@result.instance_variable_get(:@cursor).should eq(2)
|
93
|
-
|
105
|
+
|
94
106
|
@result.fetch_row.should be_nil
|
95
107
|
@result.instance_variable_get(:@cursor).should eq(2)
|
96
108
|
end
|
97
109
|
end
|
98
|
-
|
110
|
+
|
99
111
|
context "resetting cursor should fetch the same row" do
|
100
112
|
it "should return the same row" do
|
101
113
|
@result.instance_variable_get(:@cursor).should eq(0)
|
@@ -104,7 +116,7 @@ describe "row results" do
|
|
104
116
|
arr.should eq(@result.fetch_array)
|
105
117
|
end
|
106
118
|
end
|
107
|
-
|
119
|
+
|
108
120
|
context "fetch without a block" do
|
109
121
|
it "should return a row twice then nil" do
|
110
122
|
@result.fetch.should be_kind_of(Row)
|
@@ -112,12 +124,12 @@ describe "row results" do
|
|
112
124
|
|
113
125
|
@result.fetch.should be_kind_of(Row)
|
114
126
|
@result.instance_variable_get(:@cursor).should eq(2)
|
115
|
-
|
127
|
+
|
116
128
|
@result.fetch.should be_nil
|
117
129
|
@result.instance_variable_get(:@cursor).should eq(2)
|
118
130
|
end
|
119
131
|
end
|
120
|
-
|
132
|
+
|
121
133
|
context "fetch with a block" do
|
122
134
|
it "fetched count should equal the number of rows" do
|
123
135
|
counter = 0
|
@@ -138,7 +150,7 @@ describe "row results" do
|
|
138
150
|
arr.should eq(row.column_values)
|
139
151
|
end
|
140
152
|
end
|
141
|
-
|
153
|
+
|
142
154
|
context "fetch_array_with a block" do
|
143
155
|
it "fetched count should equal the number of rows" do
|
144
156
|
counter = 0
|
@@ -164,7 +176,7 @@ describe "row results" do
|
|
164
176
|
@result.fetch_hash.should be_nil
|
165
177
|
end
|
166
178
|
end
|
167
|
-
|
179
|
+
|
168
180
|
context "fetch_hash_with a block" do
|
169
181
|
it "should iterate rows() times and return hashes" do
|
170
182
|
counter = 0
|
@@ -175,4 +187,20 @@ describe "row results" do
|
|
175
187
|
counter.should eq(@result.rows)
|
176
188
|
end
|
177
189
|
end
|
190
|
+
|
191
|
+
describe "#each" do
|
192
|
+
it "yields each row as a hash" do
|
193
|
+
rows = []
|
194
|
+
@result.each { |row| rows << row }
|
195
|
+
rows.each do |row|
|
196
|
+
row.should be_instance_of(CassandraCQL::Row)
|
197
|
+
row.column_names.should eq(['col1', 'col2', 'col3', 'col4'])
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
it "is enumerable" do
|
203
|
+
@result.class.ancestors.should include(Enumerable)
|
204
|
+
@result.map { |row| row['col1'] }.should eq(['val1', nil])
|
205
|
+
end
|
178
206
|
end
|
data/spec/statement_spec.rb
CHANGED
@@ -130,6 +130,14 @@ describe "cast_to_cql" do
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
+
context "with a SimpleUUID::UUID object" do
|
134
|
+
it "should return the guid" do
|
135
|
+
uuid = SimpleUUID::UUID.new
|
136
|
+
guid = Statement.cast_to_cql(uuid)
|
137
|
+
guid.should eq(uuid.to_guid)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
133
141
|
context "with a String without quotes" do
|
134
142
|
it "should return a copy of itself" do
|
135
143
|
str = "This is a string"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra-cql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -209,9 +209,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
209
|
- - ! '>='
|
210
210
|
- !ruby/object:Gem::Version
|
211
211
|
version: '0'
|
212
|
-
segments:
|
213
|
-
- 0
|
214
|
-
hash: -2241138987958010983
|
215
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
213
|
none: false
|
217
214
|
requirements:
|