fdb 6.0.11 → 6.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fdbimpl.rb +1 -1
- data/lib/fdbtuple.rb +44 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1623c8895eed2ba5d05d65e2710ee7675f33bfeb
|
4
|
+
data.tar.gz: 022a06865f41c18e61dad70f34965b834b00cd78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27e4e4aa6b5e1c131f0fda38665a721c9a05e6f5e6e4307307bbed0198dc8b1e517d1721a3041287df255e636e1872e240371261f7e76437167ef75f752a6487
|
7
|
+
data.tar.gz: 6afd15e371296a0f5342572f7eba6a86c6d676f4c723f535860b4b89fd2dd8efbb235563f41ff971dc954b7ce767b5831a72e0e953067afecf2e44760ae12f70
|
data/lib/fdbimpl.rb
CHANGED
@@ -170,7 +170,7 @@ module FDB
|
|
170
170
|
Proc.new do || @setfunc.call(v[0], nil) end
|
171
171
|
when String then
|
172
172
|
Proc.new do |opt=nil| @setfunc.call(v[0], (opt.nil? ? opt : opt.encode('UTF-8')) ) end
|
173
|
-
when
|
173
|
+
when Integer then
|
174
174
|
Proc.new do |opt| @setfunc.call(v[0], [opt].pack("q<")) end
|
175
175
|
else
|
176
176
|
raise ArgumentError, "Don't know how to set options of type #{v[2].class}"
|
data/lib/fdbtuple.rb
CHANGED
@@ -35,8 +35,8 @@ module FDB
|
|
35
35
|
@@STRING_CODE = 0x02
|
36
36
|
@@NESTED_CODE = 0x05
|
37
37
|
@@INT_ZERO_CODE = 0x14
|
38
|
-
@@POS_INT_END =
|
39
|
-
@@NEG_INT_START =
|
38
|
+
@@POS_INT_END = 0x1d
|
39
|
+
@@NEG_INT_START = 0x0b
|
40
40
|
@@FLOAT_CODE = 0x20
|
41
41
|
@@DOUBLE_CODE = 0x21
|
42
42
|
@@FALSE_CODE = 0x26
|
@@ -117,12 +117,28 @@ module FDB
|
|
117
117
|
elsif code == @@STRING_CODE
|
118
118
|
epos = find_terminator(v, pos+1)
|
119
119
|
[v.slice(pos+1, epos-pos-1).gsub("\x00\xFF", "\x00").force_encoding("UTF-8"), epos+1]
|
120
|
-
elsif code >= @@INT_ZERO_CODE && code
|
120
|
+
elsif code >= @@INT_ZERO_CODE && code < @@POS_INT_END
|
121
121
|
n = code - @@INT_ZERO_CODE
|
122
122
|
[("\x00" * (8-n) + v.slice(pos+1, n)).unpack("Q>")[0], pos+n+1]
|
123
|
-
elsif code
|
123
|
+
elsif code > @@NEG_INT_START and code < @@INT_ZERO_CODE
|
124
124
|
n = @@INT_ZERO_CODE - code
|
125
125
|
[("\x00" * (8-n) + v.slice(pos+1, n)).unpack("Q>")[0]-@@size_limits[n], pos+n+1]
|
126
|
+
elsif code == @@POS_INT_END
|
127
|
+
length = v.getbyte(pos+1)
|
128
|
+
val = 0
|
129
|
+
length.times do |i|
|
130
|
+
val = val << 8
|
131
|
+
val += v.getbyte(pos+2+i)
|
132
|
+
end
|
133
|
+
[val, pos+length+2]
|
134
|
+
elsif code == @@NEG_INT_START
|
135
|
+
length = v.getbyte(pos+1) ^ 0xff
|
136
|
+
val = 0
|
137
|
+
length.times do |i|
|
138
|
+
val = val << 8
|
139
|
+
val += v.getbyte(pos+2+i)
|
140
|
+
end
|
141
|
+
[val - (1 << (length*8)) + 1, pos+length+2]
|
126
142
|
elsif code == @@FALSE_CODE
|
127
143
|
[false, pos+1]
|
128
144
|
elsif code == @@TRUE_CODE
|
@@ -182,15 +198,34 @@ module FDB
|
|
182
198
|
raise ArgumentError, "unsupported encoding #{v.encoding.name}"
|
183
199
|
end
|
184
200
|
elsif v.kind_of? Integer
|
185
|
-
raise RangeError, "
|
201
|
+
raise RangeError, "Integer magnitude is too large (more than 255 bytes)" if v < -2**2040+1 || v > 2**2040-1
|
186
202
|
if v == 0
|
187
203
|
@@INT_ZERO_CODE.chr
|
188
204
|
elsif v > 0
|
189
|
-
|
190
|
-
|
205
|
+
if v > @@size_limits[-1]
|
206
|
+
length = (v.bit_length + 7) / 8
|
207
|
+
result = @@POS_INT_END.chr + length.chr
|
208
|
+
length.times do |i|
|
209
|
+
result << ((v >> (8 * (length-i-1))) & 0xff)
|
210
|
+
end
|
211
|
+
result
|
212
|
+
else
|
213
|
+
n = bisect_left( @@size_limits, v )
|
214
|
+
(@@INT_ZERO_CODE+n).chr + [v].pack("Q>").slice(8-n, n)
|
215
|
+
end
|
191
216
|
else
|
192
|
-
|
193
|
-
|
217
|
+
if -v > @@size_limits[-1]
|
218
|
+
length = ((-v).bit_length + 7) / 8
|
219
|
+
v += (1 << (length * 8)) - 1
|
220
|
+
result = @@NEG_INT_START.chr + (length ^ 0xff).chr
|
221
|
+
length.times do |i|
|
222
|
+
result << ((v >> (8 * (length-i-1))) & 0xff)
|
223
|
+
end
|
224
|
+
result
|
225
|
+
else
|
226
|
+
n = bisect_left( @@size_limits, -v )
|
227
|
+
(@@INT_ZERO_CODE-n).chr + [@@size_limits[n]+v].pack("Q>").slice(8-n, n)
|
228
|
+
end
|
194
229
|
end
|
195
230
|
elsif v.kind_of? TrueClass
|
196
231
|
@@TRUE_CODE.chr
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FoundationDB
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|