Skip to content

Commit f212597

Browse files
authored
Ruby 2.6 BigDecimal initialization compatibility (#255)
1 parent fafa7ff commit f212597

File tree

7 files changed

+29
-29
lines changed

7 files changed

+29
-29
lines changed

integration/datatype_utils.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def self.get_sample(datatype)
6464
when 'bigint' then 765438000
6565
when 'blob' then '0x626c6f62'
6666
when 'boolean' then true
67-
when 'decimal' then ::BigDecimal.new('1313123123.234234234234234234123')
67+
when 'decimal' then BigDecimal('1313123123.234234234234234234123')
6868
when 'double' then 3.141592653589793
6969
when 'float' then 1.25
7070
when 'inet' then ::IPAddr.new('200.199.198.197')

lib/cassandra/protocol/cql_byte_buffer.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def read_decimal(len = bytesize)
5858
if scale <= 0
5959
# Special case where the actual scale is positive; scale in the protocol is actually negative of
6060
# reality.
61-
BigDecimal.new(number_string + '0' * -scale)
61+
BigDecimal(number_string + '0' * -scale)
6262
else
6363
if number_string.length <= scale
6464
if number_string.start_with?(MINUS)
@@ -75,7 +75,7 @@ def read_decimal(len = bytesize)
7575
fraction_string <<
7676
number_string[number_string.length - scale, number_string.length]
7777
end
78-
BigDecimal.new(fraction_string)
78+
BigDecimal(fraction_string)
7979
end
8080
rescue Errors::DecodingError => e
8181
raise Errors::DecodingError, e.message, e.backtrace

lib/cassandra/types.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def assert_boolean(value, message, &block)
158158
end
159159

160160
def new_decimal(value)
161-
::BigDecimal.new(value)
161+
BigDecimal(value)
162162
end
163163

164164
def assert_decimal(value, message, &block)

spec/cassandra/protocol/cql_byte_buffer_spec.rb

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module Protocol
2525
let :buffer do
2626
described_class.new
2727
end
28-
28+
2929
describe '#read_unsigned_byte' do
3030
let :buffer do
3131
described_class.new("\xab")
@@ -79,62 +79,62 @@ module Protocol
7979
end
8080

8181
it 'decodes a decimal to a BigDecimal' do
82-
buffer.read_decimal.should == BigDecimal.new('1042342234234.123423435647768234')
82+
buffer.read_decimal.should == BigDecimal('1042342234234.123423435647768234')
8383
end
8484

8585
it 'decodes a negative decimal' do
8686
buffer = described_class.new("\x00\x00\x00\x12\xF2\xD8\x02\xB6R\x7F\x99\xEE\x98#\x99\xA9V")
87-
buffer.read_decimal.should == BigDecimal.new('-1042342234234.123423435647768234')
87+
buffer.read_decimal.should == BigDecimal('-1042342234234.123423435647768234')
8888
end
8989

9090
it 'decodes a positive decimal with only fractions' do
9191
buffer = described_class.new("\x00\x00\x00\x13*\xF8\xC4\xDF\xEB]o")
92-
buffer.read_decimal.should == BigDecimal.new('0.0012095473475870063')
92+
buffer.read_decimal.should == BigDecimal('0.0012095473475870063')
9393
end
9494

9595
it 'decodes a negative decimal with only fractions' do
9696
buffer = described_class.new("\x00\x00\x00\x13\xD5\a;\x20\x14\xA2\x91")
97-
buffer.read_decimal.should == BigDecimal.new('-0.0012095473475870063')
97+
buffer.read_decimal.should == BigDecimal('-0.0012095473475870063')
9898
end
9999

100100
it 'decodes a small negative decimal' do
101101
buffer = described_class.new("\x00\x00\x00\x12\x91z\xE1\xAF\x06c\x5A")
102-
buffer.read_decimal.should == BigDecimal.new('-0.031108612692221094')
102+
buffer.read_decimal.should == BigDecimal('-0.031108612692221094')
103103
end
104104

105105
it 'decodes a decimal with negative scale' do
106106
buffer = described_class.new("\xff\xff\xff\xfa\x0a")
107-
buffer.read_decimal.should == BigDecimal.new('10000000')
107+
buffer.read_decimal.should == BigDecimal('10000000')
108108
end
109109

110110
it 'decodes a negative decimal with negative scale' do
111111
buffer = described_class.new("\xff\xff\xff\xf9\xfd")
112-
buffer.read_decimal.should == BigDecimal.new('-30000000')
112+
buffer.read_decimal.should == BigDecimal('-30000000')
113113
end
114114

115115
it 'decodes a decimal with zero scale' do
116116
buffer = described_class.new("\x00\x00\x00\x00\x0a")
117-
buffer.read_decimal.should == BigDecimal.new('10')
117+
buffer.read_decimal.should == BigDecimal('10')
118118
end
119119

120120
it 'decodes a negative decimal with zero scale' do
121121
buffer = described_class.new("\x00\x00\x00\x00\xfe")
122-
buffer.read_decimal.should == BigDecimal.new('-2')
122+
buffer.read_decimal.should == BigDecimal('-2')
123123
end
124124

125125
it 'decodes zero decimal with zero scale' do
126126
buffer = described_class.new("\x00\x00\x00\x00\x00")
127-
buffer.read_decimal.should == BigDecimal.new('0')
127+
buffer.read_decimal.should == BigDecimal('0')
128128
end
129129

130130
it 'decodes zero decimal with negative scale' do
131131
buffer = described_class.new("\xff\xff\xff\xf9\x00")
132-
buffer.read_decimal.should == BigDecimal.new('0')
132+
buffer.read_decimal.should == BigDecimal('0')
133133
end
134134

135135
it 'decodes zero decimal with positive scale' do
136136
buffer = described_class.new("\x00\x00\x00\x05\x00")
137-
buffer.read_decimal.should == BigDecimal.new('0')
137+
buffer.read_decimal.should == BigDecimal('0')
138138
end
139139

140140
it 'consumes the bytes' do
@@ -326,7 +326,7 @@ module Protocol
326326
it 'decodes a UUID as a Cassandra::Uuid' do
327327
buffer.read_uuid.should == Uuid.new('a4a70900-24e1-11df-8924-001ff3591711')
328328
end
329-
329+
330330
it 'decodes a UUID as a Cassandra::TimeUuid' do
331331
uuid = buffer.read_uuid(TimeUuid)
332332
uuid.should == TimeUuid.new('a4a70900-24e1-11df-8924-001ff3591711')
@@ -337,7 +337,7 @@ module Protocol
337337
buffer.read_uuid
338338
buffer.should be_empty
339339
end
340-
340+
341341
it 'raises an error when there a not enough bytes in the buffer' do
342342
b = described_class.new(buffer.discard(2).read(5))
343343
expect { b.read_uuid }.to raise_error(Errors::DecodingError)
@@ -910,38 +910,38 @@ module Protocol
910910

911911
describe '#append_decimal' do
912912
it 'encodes a BigDecimal as a decimal' do
913-
buffer.append_decimal(BigDecimal.new('1042342234234.123423435647768234'))
913+
buffer.append_decimal(BigDecimal('1042342234234.123423435647768234'))
914914
buffer.should eql_bytes("\x00\x00\x00\x12\r'\xFDI\xAD\x80f\x11g\xDCfV\xAA")
915915
end
916916

917917
it 'encodes a 0.0 BigDecimal' do
918-
buffer.append_decimal(BigDecimal.new('0.0'))
918+
buffer.append_decimal(BigDecimal('0.0'))
919919
buffer.should eql_bytes("\x00\x00\x00\x01\x00")
920920
end
921921

922922
it 'encodes a BigDecimal ending in .0' do
923-
buffer.append_decimal(BigDecimal.new('1042342234234.0'))
923+
buffer.append_decimal(BigDecimal('1042342234234.0'))
924924
buffer.should eql_bytes("\x00\x00\x00\x01\tz\xE4b\xD4\xC4")
925925
end
926926

927927
it 'encodes a BigDecimal ending with 00.0' do
928-
buffer.append_decimal(BigDecimal.new('12000.0'))
928+
buffer.append_decimal(BigDecimal('12000.0'))
929929
buffer.should eql_bytes("\x00\x00\x00\x01\x01\xD4\xC0")
930930
end
931931

932932
it 'encodes a BigDecimal with zero padding when sign bit is on' do
933-
buffer.append_decimal(BigDecimal.new('25.0'))
933+
buffer.append_decimal(BigDecimal('25.0'))
934934
buffer.should eql_bytes("\x00\x00\x00\x01\x00\xFA")
935935
end
936936

937937
it 'appends to the buffer' do
938938
buffer << "\x99"
939-
buffer.append_decimal(BigDecimal.new('1042342234234.123423435647768234'))
939+
buffer.append_decimal(BigDecimal('1042342234234.123423435647768234'))
940940
buffer.read(1).should eql_bytes("\x99")
941941
end
942942

943943
it 'returns the buffer' do
944-
result = buffer.append_decimal(BigDecimal.new('3.14'))
944+
result = buffer.append_decimal(BigDecimal('3.14'))
945945
result.should equal(buffer)
946946
end
947947
end

spec/cassandra/protocol/requests/execute_request_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ module Protocol
163163
[Types.blob, "\xab\xcd", "\xab\xcd"],
164164
[Types.boolean, false, "\x00"],
165165
[Types.boolean, true, "\x01"],
166-
[Types.decimal, ::BigDecimal.new('1042342234234.123423435647768234'), "\x00\x00\x00\x12\r'\xFDI\xAD\x80f\x11g\xDCfV\xAA"],
166+
[Types.decimal, BigDecimal('1042342234234.123423435647768234'), "\x00\x00\x00\x12\r'\xFDI\xAD\x80f\x11g\xDCfV\xAA"],
167167
[Types.double, 10000.123123123, "@\xC3\x88\x0F\xC2\x7F\x9DU"],
168168
[Types.float, 12.13, "AB\x14{"],
169169
[Types.inet, ::IPAddr.new('8.8.8.8'), "\x08\x08\x08\x08"],

spec/cassandra/protocol/requests/query_request_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ module Protocol
9797
[765438000, Types.bigint, "\x00\x00\x00\x08\x00\x00\x00\x00\x2d\x9f\xa8\x30"],
9898
[::Math::PI, Types.double, "\x00\x00\x00\x08\x40\x09\x21\xfb\x54\x44\x2d\x18"],
9999
[67890656781923123918798273492834712837198237, Types.varint, "\x00\x00\x00\x13\x03\x0b\x58\xb5\x74\x0a\xce\x65\x95\xb4\x03\x26\x7b\x6b\x6a\x6e\x08\x91\x9d"],
100-
[::BigDecimal.new('1313123123.234234234234234234123'), Types.decimal, "\x00\x00\x00\x11\x00\x00\x00\x15\x10\x92\xed\xfd\x4b\x93\x4b\xd7\xa2\xc1\x0c\x65\x0b"],
100+
[BigDecimal('1313123123.234234234234234234123'), Types.decimal, "\x00\x00\x00\x11\x00\x00\x00\x15\x10\x92\xed\xfd\x4b\x93\x4b\xd7\xa2\xc1\x0c\x65\x0b"],
101101
[true, Types.boolean, "\x00\x00\x00\x01\x01"],
102102
[nil, Types.varchar, "\xff\xff\xff\xff"],
103103
[Uuid.new('00b69180-d0e1-11e2-8b8b-0800200c9a66'), Types.uuid, "\x00\x00\x00\x10\x00\xb6\x91\x80\xd0\xe1\x11\xe2\x8b\x8b\x08\x00\x20\x0c\x9a\x66"],

spec/cassandra/util_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ module Cassandra
2727
[Types.bigint, 2**63],
2828
[Types.boolean, true],
2929
[Types.boolean, false],
30-
[Types.decimal, ::BigDecimal.new('1042342234234.123423435647768234')],
30+
[Types.decimal, BigDecimal('1042342234234.123423435647768234')],
3131
[Types.double, 10000.123123123],
3232
[Types.inet, ::IPAddr.new('8.8.8.8')],
3333
[Types.uuid, Uuid.new(::SecureRandom.hex)],

0 commit comments

Comments
 (0)