cassandra-driver 3.2.2 → 3.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 +4 -4
- data/README.md +4 -4
- data/lib/cassandra/cluster/schema/cql_type_parser.rb +2 -2
- data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +3 -4
- data/lib/cassandra/protocol/cql_byte_buffer.rb +1 -1
- data/lib/cassandra/protocol/cql_protocol_handler.rb +1 -0
- data/lib/cassandra/table.rb +1 -1
- data/lib/cassandra/types.rb +67 -0
- data/lib/cassandra/version.rb +1 -1
- 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: c5546b5f0956cd7d4d1c769c455e78e48ac5961a
|
4
|
+
data.tar.gz: 7c24862b085ac804ff8c8dd338a2dd7826a93caa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5164d4dd457d57592cbdc0e523c471bbeba2f7afeebb89811d103267795ee3ce335a617b82291dd4b5fd96971f960740c65da80d3346d7250234cf61f8bd80e4
|
7
|
+
data.tar.gz: 99ee34fe7142a194b3a9c78c9493f7d82a31081dba46efa396f96cfecd411e77be523414a823f68e2967fa38496aa116697348f50789861f6f91a805077739dd
|
data/README.md
CHANGED
@@ -101,7 +101,7 @@ __Note__: if you want to use compression you should also install [snappy](http:/
|
|
101
101
|
|
102
102
|
Some of the new features added to the driver have unfortunately led to changes in the original cql-rb API.
|
103
103
|
In the examples directory, you can find [an example of how to wrap the ruby driver to achieve almost complete
|
104
|
-
interface parity with cql-rb](https://github.com/datastax/ruby-driver/blob/v3.2.
|
104
|
+
interface parity with cql-rb](https://github.com/datastax/ruby-driver/blob/v3.2.3/examples/cql-rb-wrapper.rb)
|
105
105
|
to assist you with gradual upgrade.
|
106
106
|
|
107
107
|
If you are upgrading to DataStax Enterprise, use the [Ruby DSE driver](https://github.com/datastax/ruby-dse-driver.git)
|
@@ -112,7 +112,7 @@ This minor release adds support for MRI 2.4.x and also contains a few miscellane
|
|
112
112
|
support for Ruby versions prior to 2.2. This was already officially the case, but the minimum version limit is
|
113
113
|
now enforced.
|
114
114
|
|
115
|
-
See the [changelog](https://github.com/datastax/ruby-driver/blob/v3.2.
|
115
|
+
See the [changelog](https://github.com/datastax/ruby-driver/blob/v3.2.3/CHANGELOG.md) for more information on all
|
116
116
|
changes in this version and past versions.
|
117
117
|
|
118
118
|
## What's new in v3.1
|
@@ -180,7 +180,7 @@ examples in the `features/` directory.
|
|
180
180
|
## Running tests
|
181
181
|
|
182
182
|
If you don't feel like reading through the following instructions on how to run
|
183
|
-
ruby-driver tests, feel free to [check out .travis.yml for the entire build code](https://github.com/datastax/ruby-driver/blob/v3.2.
|
183
|
+
ruby-driver tests, feel free to [check out .travis.yml for the entire build code](https://github.com/datastax/ruby-driver/blob/v3.2.3/.travis.yml).
|
184
184
|
|
185
185
|
* Check out the driver codebase and install test dependencies:
|
186
186
|
|
@@ -204,7 +204,7 @@ CASSANDRA_VERSION=2.1.12 bundle exec rake test # run both as well as integration
|
|
204
204
|
## Changelog & versioning
|
205
205
|
|
206
206
|
Check out the [releases on GitHub](https://github.com/datastax/ruby-driver/releases) and
|
207
|
-
[changelog](https://github.com/datastax/ruby-driver/blob/v3.2.
|
207
|
+
[changelog](https://github.com/datastax/ruby-driver/blob/v3.2.3/CHANGELOG.md). Version
|
208
208
|
numbering follows the [semantic versioning](http://semver.org/) scheme.
|
209
209
|
|
210
210
|
Private and experimental APIs, defined as whatever is not in the
|
@@ -40,8 +40,6 @@ module Cassandra
|
|
40
40
|
private
|
41
41
|
|
42
42
|
def lookup_type(node, types)
|
43
|
-
return lookup_type(node.children.first, types) if node.name == 'frozen'
|
44
|
-
|
45
43
|
case node.name
|
46
44
|
when 'text' then Cassandra::Types.text
|
47
45
|
when 'blob' then Cassandra::Types.blob
|
@@ -70,6 +68,8 @@ module Cassandra
|
|
70
68
|
Cassandra::Types.list(lookup_type(node.children.first, types))
|
71
69
|
when 'tuple' then
|
72
70
|
Cassandra::Types.tuple(*node.children.map { |t| lookup_type(t, types)})
|
71
|
+
when 'frozen' then
|
72
|
+
Cassandra::Types.frozen(lookup_type(node.children.first, types))
|
73
73
|
when 'empty' then
|
74
74
|
Cassandra::Types.custom('org.apache.cassandra.db.marshal.EmptyType')
|
75
75
|
when /\A'/ then
|
@@ -50,7 +50,8 @@ module Cassandra
|
|
50
50
|
'org.apache.cassandra.db.marshal.ShortType' => :smallint,
|
51
51
|
'org.apache.cassandra.db.marshal.ByteType' => :tinyint,
|
52
52
|
'org.apache.cassandra.db.marshal.TimeType' => :time,
|
53
|
-
'org.apache.cassandra.db.marshal.SimpleDateType' => :date
|
53
|
+
'org.apache.cassandra.db.marshal.SimpleDateType' => :date,
|
54
|
+
'org.apache.cassandra.db.marshal.FrozenType' => :frozen
|
54
55
|
}.freeze
|
55
56
|
|
56
57
|
def parse(string)
|
@@ -109,14 +110,12 @@ module Cassandra
|
|
109
110
|
end
|
110
111
|
|
111
112
|
def lookup_type(node)
|
112
|
-
return lookup_type(node.children.first) if node.name == 'org.apache.cassandra.db.marshal.FrozenType'
|
113
|
-
|
114
113
|
type = @@types.fetch(node.name) do
|
115
114
|
return Cassandra::Types.custom(dump_node(node))
|
116
115
|
end
|
117
116
|
|
118
117
|
case type
|
119
|
-
when :set, :list
|
118
|
+
when :set, :list, :frozen
|
120
119
|
Cassandra::Types.send(type, lookup_type(node.children.first))
|
121
120
|
when :map
|
122
121
|
Cassandra::Types.map(*node.children.map(&method(:lookup_type)))
|
@@ -55,7 +55,7 @@ module Cassandra
|
|
55
55
|
def read_decimal(len = bytesize)
|
56
56
|
scale = read_signed_int
|
57
57
|
number_string = read_varint(len - 4).to_s
|
58
|
-
if scale
|
58
|
+
if scale <= 0
|
59
59
|
# Special case where the actual scale is positive; scale in the protocol is actually negative of
|
60
60
|
# reality.
|
61
61
|
BigDecimal.new(number_string + '0' * -scale)
|
data/lib/cassandra/table.rb
CHANGED
@@ -169,7 +169,7 @@ module Cassandra
|
|
169
169
|
|
170
170
|
cql << "\n)\nWITH "
|
171
171
|
|
172
|
-
if
|
172
|
+
if !@clustering_order.empty? && !@clustering_columns.empty?
|
173
173
|
cql << 'CLUSTERING ORDER BY ('
|
174
174
|
first = true
|
175
175
|
@clustering_columns.zip(@clustering_order) do |column, order|
|
data/lib/cassandra/types.rb
CHANGED
@@ -1414,6 +1414,73 @@ module Cassandra
|
|
1414
1414
|
alias == eql?
|
1415
1415
|
end
|
1416
1416
|
|
1417
|
+
class Frozen < Type
|
1418
|
+
# @private
|
1419
|
+
attr_reader :value_type
|
1420
|
+
|
1421
|
+
# @private
|
1422
|
+
def initialize(value_type)
|
1423
|
+
super(:frozen)
|
1424
|
+
@value_type = value_type
|
1425
|
+
end
|
1426
|
+
|
1427
|
+
# Coerces the value to Array
|
1428
|
+
# @param value [Object] original value
|
1429
|
+
# @return [Array] value
|
1430
|
+
# @see Cassandra::Type#new
|
1431
|
+
def new(*value)
|
1432
|
+
value = Array(value.first) if value.one?
|
1433
|
+
|
1434
|
+
value.each do |v|
|
1435
|
+
Util.assert_type(@value_type, v)
|
1436
|
+
end
|
1437
|
+
value
|
1438
|
+
end
|
1439
|
+
|
1440
|
+
# Asserts that a given value is an Array
|
1441
|
+
# @param value [Object] value to be validated
|
1442
|
+
# @param message [String] error message to use when assertion fails
|
1443
|
+
# @yieldreturn [String] error message to use when assertion fails
|
1444
|
+
# @raise [ArgumentError] if the value is not an Array
|
1445
|
+
# @return [void]
|
1446
|
+
# @see Cassandra::Type#assert
|
1447
|
+
def assert(value, message = nil, &block)
|
1448
|
+
Util.assert_instance_of(::Array, value, message, &block)
|
1449
|
+
value.each do |v|
|
1450
|
+
Util.assert_type(@value_type, v, message, &block)
|
1451
|
+
end
|
1452
|
+
nil
|
1453
|
+
end
|
1454
|
+
|
1455
|
+
# @return [String] `"list<type>"`
|
1456
|
+
# @see Cassandra::Type#to_s
|
1457
|
+
def to_s
|
1458
|
+
"frozen<#{@value_type}>"
|
1459
|
+
end
|
1460
|
+
|
1461
|
+
def hash
|
1462
|
+
@hash ||= begin
|
1463
|
+
h = 17
|
1464
|
+
h = 31 * h + @kind.hash
|
1465
|
+
h = 31 * h + @value_type.hash
|
1466
|
+
h
|
1467
|
+
end
|
1468
|
+
end
|
1469
|
+
|
1470
|
+
def eql?(other)
|
1471
|
+
other.is_a?(List) && @value_type == other.value_type
|
1472
|
+
end
|
1473
|
+
|
1474
|
+
alias == eql?
|
1475
|
+
end
|
1476
|
+
|
1477
|
+
def frozen(value_type)
|
1478
|
+
Util.assert_instance_of(Cassandra::Type, value_type,
|
1479
|
+
"frozen type must be a Cassandra::Type, #{value_type.inspect} given")
|
1480
|
+
|
1481
|
+
Frozen.new(value_type)
|
1482
|
+
end
|
1483
|
+
|
1417
1484
|
# @return [Cassandra::Types::Text] text type since varchar is an alias for text
|
1418
1485
|
def varchar
|
1419
1486
|
Text
|
data/lib/cassandra/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Theo Hultberg
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-08-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ione
|