cassandra-driver 3.0.0.rc.1 → 3.0.0.rc.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +6 -1
  3. data/lib/cassandra.rb +74 -55
  4. data/lib/cassandra/attr_boolean.rb +33 -0
  5. data/lib/cassandra/auth.rb +2 -1
  6. data/lib/cassandra/auth/providers/password.rb +4 -16
  7. data/lib/cassandra/cluster/connector.rb +14 -4
  8. data/lib/cassandra/cluster/control_connection.rb +59 -67
  9. data/lib/cassandra/cluster/metadata.rb +1 -3
  10. data/lib/cassandra/cluster/options.rb +9 -10
  11. data/lib/cassandra/cluster/registry.rb +16 -5
  12. data/lib/cassandra/cluster/schema.rb +45 -1
  13. data/lib/cassandra/cluster/schema/fetchers.rb +475 -272
  14. data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +2 -6
  15. data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +5 -7
  16. data/lib/cassandra/column.rb +1 -20
  17. data/lib/cassandra/column_container.rb +322 -0
  18. data/lib/cassandra/compression/compressors/lz4.rb +3 -5
  19. data/lib/cassandra/driver.rb +1 -1
  20. data/lib/cassandra/errors.rb +38 -22
  21. data/lib/cassandra/execution/options.rb +4 -2
  22. data/lib/cassandra/future.rb +3 -9
  23. data/lib/cassandra/host.rb +16 -2
  24. data/lib/cassandra/index.rb +104 -0
  25. data/lib/cassandra/keyspace.rb +88 -9
  26. data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +6 -10
  27. data/lib/cassandra/materialized_view.rb +90 -0
  28. data/lib/cassandra/protocol/coder.rb +3 -3
  29. data/lib/cassandra/protocol/cql_byte_buffer.rb +12 -11
  30. data/lib/cassandra/protocol/cql_protocol_handler.rb +12 -8
  31. data/lib/cassandra/protocol/request.rb +4 -5
  32. data/lib/cassandra/protocol/requests/execute_request.rb +3 -5
  33. data/lib/cassandra/protocol/requests/query_request.rb +1 -1
  34. data/lib/cassandra/protocol/requests/startup_request.rb +6 -8
  35. data/lib/cassandra/protocol/response.rb +1 -2
  36. data/lib/cassandra/protocol/responses/auth_challenge_response.rb +3 -4
  37. data/lib/cassandra/protocol/responses/auth_success_response.rb +3 -4
  38. data/lib/cassandra/protocol/responses/authenticate_response.rb +3 -4
  39. data/lib/cassandra/protocol/responses/error_response.rb +3 -4
  40. data/lib/cassandra/protocol/responses/event_response.rb +2 -3
  41. data/lib/cassandra/protocol/responses/prepared_result_response.rb +3 -4
  42. data/lib/cassandra/protocol/responses/ready_response.rb +3 -4
  43. data/lib/cassandra/protocol/responses/result_response.rb +7 -8
  44. data/lib/cassandra/protocol/responses/rows_result_response.rb +3 -4
  45. data/lib/cassandra/protocol/responses/schema_change_event_response.rb +3 -4
  46. data/lib/cassandra/protocol/responses/schema_change_result_response.rb +3 -4
  47. data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +3 -4
  48. data/lib/cassandra/protocol/responses/status_change_event_response.rb +3 -4
  49. data/lib/cassandra/protocol/responses/supported_response.rb +3 -4
  50. data/lib/cassandra/protocol/responses/topology_change_event_response.rb +3 -4
  51. data/lib/cassandra/protocol/responses/void_result_response.rb +3 -4
  52. data/lib/cassandra/protocol/v1.rb +1 -5
  53. data/lib/cassandra/protocol/v3.rb +1 -3
  54. data/lib/cassandra/result.rb +2 -1
  55. data/lib/cassandra/retry/policies/downgrading_consistency.rb +1 -3
  56. data/lib/cassandra/statements/prepared.rb +3 -3
  57. data/lib/cassandra/table.rb +39 -220
  58. data/lib/cassandra/time_uuid.rb +5 -7
  59. data/lib/cassandra/tuple.rb +4 -12
  60. data/lib/cassandra/types.rb +92 -65
  61. data/lib/cassandra/udt.rb +34 -14
  62. data/lib/cassandra/uuid.rb +10 -18
  63. data/lib/cassandra/version.rb +1 -1
  64. metadata +8 -2
@@ -23,6 +23,11 @@ module Cassandra
23
23
  class TimeUuid < Uuid
24
24
  include Comparable
25
25
 
26
+ # @private
27
+ LOWER_HALF_MASK = 0xffffffff_ffffffff
28
+ # @private
29
+ GREGORIAN_OFFSET = 122192928000000000
30
+
26
31
  # Returns the time component from this UUID as a Time.
27
32
  #
28
33
  # @return [Time]
@@ -69,12 +74,5 @@ module Cassandra
69
74
  t |= (n & 0xffffffff00000000) >> 32
70
75
  t
71
76
  end
72
-
73
- private
74
-
75
- # @private
76
- LOWER_HALF_MASK = 0xffffffff_ffffffff
77
- # @private
78
- GREGORIAN_OFFSET = 122192928000000000
79
77
  end
80
78
  end
@@ -40,16 +40,12 @@ module Cassandra
40
40
 
41
41
  def fetch(i)
42
42
  i = Integer(i)
43
- if i < 0 || i >= @types.size
44
- raise ::IndexError, "index #{i} is outside of tuple, size: #{@types.size}"
45
- end
43
+ raise ::IndexError, "index #{i} is outside of tuple, size: #{@types.size}" if i < 0 || i >= @types.size
46
44
  @values[i]
47
45
  end
48
46
 
49
47
  def []=(i, value)
50
- if i < 0 || i >= @types.size
51
- raise ::IndexError, "index #{i} is outside of tuple, size: #{@types.size}"
52
- end
48
+ raise ::IndexError, "index #{i} is outside of tuple, size: #{@types.size}" if i < 0 || i >= @types.size
53
49
  Util.assert_type(@types[i], value)
54
50
  @values[i] = value
55
51
  end
@@ -90,9 +86,7 @@ module Cassandra
90
86
  # @return [Object] value of the tuple at position `i`
91
87
  def fetch(i)
92
88
  i = Integer(i)
93
- if i < 0 || i >= @values.size
94
- raise ::IndexError, "index #{i} is outside of tuple, size: #{@values.size}"
95
- end
89
+ raise ::IndexError, "index #{i} is outside of tuple, size: #{@values.size}" if i < 0 || i >= @values.size
96
90
  @values[i]
97
91
  end
98
92
 
@@ -103,9 +97,7 @@ module Cassandra
103
97
  # @return [Object] value of the tuple at position `i`
104
98
  def []=(i, value)
105
99
  i = Integer(i)
106
- if i < 0 || i >= @values.size
107
- raise ::IndexError, "index #{i} is outside of tuple, size: #{@values.size}"
108
- end
100
+ raise ::IndexError, "index #{i} is outside of tuple, size: #{@values.size}" if i < 0 || i >= @values.size
109
101
  @values[i] = value
110
102
  end
111
103
 
@@ -48,7 +48,13 @@ module Cassandra
48
48
  end
49
49
  end
50
50
 
51
- module Types; extend self
51
+ module Types
52
+ # If we use module_function, the yard docs end up showing duplicates of all
53
+ # methods: one for self, the other as instance methods.
54
+ #
55
+ # rubocop:disable Style/ModuleFunction
56
+ extend self
57
+
52
58
  # @private
53
59
  class Simple < Type
54
60
  def new(value)
@@ -71,12 +77,13 @@ module Cassandra
71
77
  def eql?(other)
72
78
  other.is_a?(Simple) && @kind == other.kind
73
79
  end
74
- alias :== :eql?
80
+
81
+ alias == eql?
75
82
 
76
83
  private
77
84
 
78
85
  def new_varchar(value)
79
- String(value)
86
+ String(value)
80
87
  end
81
88
 
82
89
  def assert_varchar(value, message, &block)
@@ -140,7 +147,7 @@ module Cassandra
140
147
  end
141
148
 
142
149
  def new_boolean(value)
143
- !!value
150
+ !value.nil? && value != false
144
151
  end
145
152
 
146
153
  def assert_boolean(value, message, &block)
@@ -652,7 +659,7 @@ module Cassandra
652
659
  # @return [String] `"list<type>"`
653
660
  # @see Cassandra::Type#to_s
654
661
  def to_s
655
- "list<#{@value_type.to_s}>"
662
+ "list<#{@value_type}>"
656
663
  end
657
664
 
658
665
  def hash
@@ -667,7 +674,8 @@ module Cassandra
667
674
  def eql?(other)
668
675
  other.is_a?(List) && @value_type == other.value_type
669
676
  end
670
- alias :== :eql?
677
+
678
+ alias == eql?
671
679
  end
672
680
 
673
681
  class Map < Type
@@ -677,7 +685,7 @@ module Cassandra
677
685
  # @private
678
686
  def initialize(key_type, value_type)
679
687
  super(:map)
680
- @key_type = key_type
688
+ @key_type = key_type
681
689
  @value_type = value_type
682
690
  end
683
691
 
@@ -704,7 +712,7 @@ module Cassandra
704
712
  end
705
713
  result
706
714
  else
707
- raise ::ArgumentError, "cannot convert #{value.inspect} to #{to_s}"
715
+ raise ::ArgumentError, "cannot convert #{value.inspect} to #{self}"
708
716
  end
709
717
  end
710
718
 
@@ -727,7 +735,7 @@ module Cassandra
727
735
  # @return [String] `"map<type, type>"`
728
736
  # @see Cassandra::Type#to_s
729
737
  def to_s
730
- "map<#{@key_type.to_s}, #{@value_type.to_s}>"
738
+ "map<#{@key_type}, #{@value_type}>"
731
739
  end
732
740
 
733
741
  def hash
@@ -745,7 +753,8 @@ module Cassandra
745
753
  @key_type == other.key_type &&
746
754
  @value_type == other.value_type
747
755
  end
748
- alias :== :eql?
756
+
757
+ alias == eql?
749
758
  end
750
759
 
751
760
  class Set < Type
@@ -816,7 +825,7 @@ module Cassandra
816
825
  # @return [String] `"set<type>"`
817
826
  # @see Cassandra::Type#to_s
818
827
  def to_s
819
- "set<#{@value_type.to_s}>"
828
+ "set<#{@value_type}>"
820
829
  end
821
830
 
822
831
  def hash
@@ -831,7 +840,8 @@ module Cassandra
831
840
  def eql?(other)
832
841
  other.is_a?(Set) && @value_type == other.value_type
833
842
  end
834
- alias :== :eql?
843
+
844
+ alias == eql?
835
845
  end
836
846
 
837
847
  # @!parse
@@ -1088,7 +1098,8 @@ module Cassandra
1088
1098
  def eql?(other)
1089
1099
  other.is_a?(Tuple) && @members == other.members
1090
1100
  end
1091
- alias :== :eql?
1101
+
1102
+ alias == eql?
1092
1103
  end
1093
1104
 
1094
1105
  # @!parse
@@ -1188,7 +1199,8 @@ module Cassandra
1188
1199
  @name == other.name &&
1189
1200
  @type == other.type
1190
1201
  end
1191
- alias :== :eql?
1202
+
1203
+ alias == eql?
1192
1204
  end
1193
1205
 
1194
1206
  # @return [String] keyspace where this type is defined
@@ -1203,15 +1215,15 @@ module Cassandra
1203
1215
  # @private
1204
1216
  def initialize(keyspace, name, fields)
1205
1217
  super(:udt)
1206
- @keyspace = keyspace
1207
- @name = name
1208
- @fields = fields
1218
+ @keyspace = keyspace
1219
+ @name = name
1220
+ @fields = fields
1209
1221
  end
1210
1222
 
1211
1223
  # @param name [String] field name
1212
1224
  # @return [Boolean] whether this type has a given field
1213
1225
  def has_field?(name)
1214
- @fields.any? {|f| f.name == name}
1226
+ @fields.any? { |f| f.name == name }
1215
1227
  end
1216
1228
 
1217
1229
  # Yield or enumerate each field defined in this type
@@ -1228,13 +1240,14 @@ module Cassandra
1228
1240
  @fields.dup
1229
1241
  end
1230
1242
  end
1231
- alias :fields :each_field
1243
+
1244
+ alias fields each_field
1232
1245
 
1233
1246
  # @param name [String] field name
1234
1247
  # @return [Cassandra::UserDefined::Field, nil] a field with this name or
1235
1248
  # nil
1236
1249
  def field(name)
1237
- @fields.find {|f| f.name == name}
1250
+ @fields.find { |f| f.name == name }
1238
1251
  end
1239
1252
 
1240
1253
  # Coerces the value to Cassandra::UDT
@@ -1290,7 +1303,7 @@ module Cassandra
1290
1303
  # @see Cassandra::Type#to_s
1291
1304
  def to_s
1292
1305
  "#{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)} " \
1293
- "{#{@fields.join(', ')}}"
1306
+ "{#{@fields.join(', ')}}"
1294
1307
  end
1295
1308
 
1296
1309
  def hash
@@ -1310,12 +1323,13 @@ module Cassandra
1310
1323
  @name == other.name &&
1311
1324
  @fields == other.fields
1312
1325
  end
1313
- alias :== :eql?
1326
+
1327
+ alias == eql?
1314
1328
 
1315
1329
  # Output this type in CQL
1316
1330
  def to_cql
1317
- cql = "CREATE TYPE #{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)} " \
1318
- "(\n"
1331
+ cql = "CREATE TYPE #{Util.escape_name(@keyspace)}.#{Util.escape_name(@name)} " \
1332
+ "(\n"
1319
1333
  first = true
1320
1334
 
1321
1335
  @fields.each do |field|
@@ -1346,7 +1360,7 @@ module Cassandra
1346
1360
  "frozen <#{Util.escape_name(type.keyspace)}.#{Util.escape_name(type.name)}>"
1347
1361
  end
1348
1362
  else
1349
- "#{type}"
1363
+ type.to_s
1350
1364
  end
1351
1365
  end
1352
1366
  end
@@ -1396,7 +1410,8 @@ module Cassandra
1396
1410
  def eql?(other)
1397
1411
  other.is_a?(Custom) && @name == other.name
1398
1412
  end
1399
- alias :== :eql?
1413
+
1414
+ alias == eql?
1400
1415
  end
1401
1416
 
1402
1417
  # @return [Cassandra::Types::Text] text type since varchar is an alias for text
@@ -1503,8 +1518,8 @@ module Cassandra
1503
1518
  # @return [Cassandra::Types::List] list type
1504
1519
  def list(value_type)
1505
1520
  Util.assert_instance_of(Cassandra::Type, value_type,
1506
- "list type must be a Cassandra::Type, #{value_type.inspect} given"
1507
- )
1521
+ "list type must be a Cassandra::Type, #{value_type.inspect} given"
1522
+ )
1508
1523
 
1509
1524
  List.new(value_type)
1510
1525
  end
@@ -1514,11 +1529,11 @@ module Cassandra
1514
1529
  # @return [Cassandra::Types::Map] map type
1515
1530
  def map(key_type, value_type)
1516
1531
  Util.assert_instance_of(Cassandra::Type, key_type,
1517
- "map key type must be a Cassandra::Type, #{key_type.inspect} given"
1518
- )
1532
+ "map key type must be a Cassandra::Type, #{key_type.inspect} given"
1533
+ )
1519
1534
  Util.assert_instance_of(Cassandra::Type, value_type,
1520
- "map value type must be a Cassandra::Type, #{value_type.inspect} given"
1521
- )
1535
+ "map value type must be a Cassandra::Type, #{value_type.inspect} given"
1536
+ )
1522
1537
 
1523
1538
  Map.new(key_type, value_type)
1524
1539
  end
@@ -1527,8 +1542,8 @@ module Cassandra
1527
1542
  # @return [Cassandra::Types::Set] set type
1528
1543
  def set(value_type)
1529
1544
  Util.assert_instance_of(Cassandra::Type, value_type,
1530
- "set type must be a Cassandra::Type, #{value_type.inspect} given"
1531
- )
1545
+ "set type must be a Cassandra::Type, #{value_type.inspect} given"
1546
+ )
1532
1547
 
1533
1548
  Set.new(value_type)
1534
1549
  end
@@ -1536,12 +1551,12 @@ module Cassandra
1536
1551
  # @param members [*Cassandra::Type] types of members of this tuple
1537
1552
  # @return [Cassandra::Types::Tuple] tuple type
1538
1553
  def tuple(*members)
1539
- Util.assert_not_empty(members, "tuple must contain at least one member")
1554
+ Util.assert_not_empty(members, 'tuple must contain at least one member')
1540
1555
  members.each do |member|
1541
1556
  Util.assert_instance_of(Cassandra::Type, member,
1542
- "each tuple member must be a Cassandra::Type, " \
1543
- "#{member.inspect} given"
1544
- )
1557
+ 'each tuple member must be a Cassandra::Type, ' \
1558
+ "#{member.inspect} given"
1559
+ )
1545
1560
  end
1546
1561
 
1547
1562
  Tuple.new(*members)
@@ -1551,13 +1566,25 @@ module Cassandra
1551
1566
  # @example Various ways of defining the same UDT
1552
1567
  # include Cassandra::Types
1553
1568
  #
1554
- # udt('simplex', 'address', {'street' => varchar, 'city' => varchar, 'state' => varchar, 'zip' => varchar}) #=> simplex.address
1569
+ # udt('simplex', 'address', {'street' => varchar,
1570
+ # 'city' => varchar,
1571
+ # 'state' => varchar,
1572
+ # 'zip' => varchar}) #=> simplex.address
1555
1573
  #
1556
- # udt('simplex', 'address', [['street', varchar], ['city', varchar], ['state', varchar], ['zip', varchar]]) #=> simplex.address
1574
+ # udt('simplex', 'address', [['street', varchar],
1575
+ # ['city', varchar],
1576
+ # ['state', varchar],
1577
+ # ['zip', varchar]]) #=> simplex.address
1557
1578
  #
1558
- # udt('simplex', 'address', ['street', varchar], ['city', varchar], ['state', varchar], ['zip', varchar]) #=> simplex.address
1579
+ # udt('simplex', 'address', ['street', varchar],
1580
+ # ['city', varchar],
1581
+ # ['state', varchar],
1582
+ # ['zip', varchar]) #=> simplex.address
1559
1583
  #
1560
- # udt('simplex', 'address', 'street', varchar, 'city', varchar, 'state', varchar, 'zip', varchar) #=> simplex.address
1584
+ # udt('simplex', 'address', 'street', varchar,
1585
+ # 'city', varchar,
1586
+ # 'state', varchar,
1587
+ # 'zip', varchar) #=> simplex.address
1561
1588
  # @param keyspace [String] name of the keyspace that this UDT is defined in
1562
1589
  # @param name [String] name of this UDT
1563
1590
  # @param fields [Hash<String, Cassandra::Type>,
@@ -1567,44 +1594,44 @@ module Cassandra
1567
1594
  # @return [Cassandra::Types::UserDefined] user defined type
1568
1595
  def udt(keyspace, name, *fields)
1569
1596
  keyspace = String(keyspace)
1570
- name = String(name)
1571
- fields = Array(fields.first) if fields.one?
1597
+ name = String(name)
1598
+ fields = Array(fields.first) if fields.one?
1572
1599
 
1573
1600
  Util.assert_not_empty(fields,
1574
- "user-defined type must contain at least one field"
1575
- )
1601
+ 'user-defined type must contain at least one field'
1602
+ )
1576
1603
 
1577
1604
  if fields.first.is_a?(::Array)
1578
1605
  fields = fields.map do |pair|
1579
1606
  Util.assert(pair.size == 2,
1580
- "fields of a user-defined type must be an Array of name and " \
1581
- "value pairs, #{pair.inspect} given"
1582
- )
1607
+ 'fields of a user-defined type must be an Array of name and ' \
1608
+ "value pairs, #{pair.inspect} given"
1609
+ )
1583
1610
  Util.assert_instance_of(::String, pair[0],
1584
- "each field name for a user-defined type must be a String, " \
1585
- "#{pair[0].inspect} given"
1586
- )
1611
+ 'each field name for a user-defined type must be a String, ' \
1612
+ "#{pair[0].inspect} given"
1613
+ )
1587
1614
  Util.assert_instance_of(Cassandra::Type, pair[1],
1588
- "each field type for a user-defined type must be a " \
1589
- "Cassandra::Type, #{pair[1].inspect} given"
1590
- )
1615
+ 'each field type for a user-defined type must be a ' \
1616
+ "Cassandra::Type, #{pair[1].inspect} given"
1617
+ )
1591
1618
 
1592
1619
  UserDefined::Field.new(*pair)
1593
1620
  end
1594
1621
  else
1595
- Util.assert((fields.size % 2) == 0,
1596
- "fields of a user-defined type must be an Array of alternating " \
1597
- "names and values pairs, #{fields.inspect} given"
1598
- )
1622
+ Util.assert(fields.size.even?,
1623
+ 'fields of a user-defined type must be an Array of alternating ' \
1624
+ "names and values pairs, #{fields.inspect} given"
1625
+ )
1599
1626
  fields = fields.each_slice(2).map do |field_name, field_type|
1600
1627
  Util.assert_instance_of(::String, field_name,
1601
- "each field name for a user-defined type must be a String, " \
1602
- "#{field_name.inspect} given"
1603
- )
1628
+ 'each field name for a user-defined type must be a String, ' \
1629
+ "#{field_name.inspect} given"
1630
+ )
1604
1631
  Util.assert_instance_of(Cassandra::Type, field_type,
1605
- "each field type for a user-defined type must be a " \
1606
- "Cassandra::Type, #{field_type.inspect} given"
1607
- )
1632
+ 'each field type for a user-defined type must be a ' \
1633
+ "Cassandra::Type, #{field_type.inspect} given"
1634
+ )
1608
1635
 
1609
1636
  UserDefined::Field.new(field_name, field_type)
1610
1637
  end
@@ -181,21 +181,45 @@ module Cassandra
181
181
  # @param values [Hash<String, Object>, Array<Array<String, Object>>,
182
182
  # *Object, *Array<String, Object>] - UDT field values
183
183
  # @example Various ways of creating the same UDT instance
184
- # Cassandra::UDT.new({'street' => '123 Main St.', 'city' => 'Whatever', 'state' => 'XZ', 'zip' => '10020'})
184
+ # Cassandra::UDT.new({'street' => '123 Main St.',
185
+ # 'city' => 'Whatever',
186
+ # 'state' => 'XZ',
187
+ # 'zip' => '10020'})
185
188
  #
186
- # Cassandra::UDT.new(street: '123 Main St.', city: 'Whatever', state: 'XZ', zip: '10020')
189
+ # Cassandra::UDT.new(street: '123 Main St.',
190
+ # city: 'Whatever',
191
+ # state: 'XZ',
192
+ # zip: '10020')
187
193
  #
188
- # Cassandra::UDT.new('street', '123 Main St.', 'city', 'Whatever', 'state', 'XZ', 'zip', '10020')
194
+ # Cassandra::UDT.new('street', '123 Main St.',
195
+ # 'city', 'Whatever',
196
+ # 'state', 'XZ',
197
+ # 'zip', '10020')
189
198
  #
190
- # Cassandra::UDT.new(:street, '123 Main St.', :city, 'Whatever', :state, 'XZ', :zip, '10020')
199
+ # Cassandra::UDT.new(:street, '123 Main St.',
200
+ # :city, 'Whatever',
201
+ # :state, 'XZ',
202
+ # :zip, '10020')
191
203
  #
192
- # Cassandra::UDT.new(['street', '123 Main St.'], ['city', 'Whatever'], ['state', 'XZ'], ['zip', '10020'])
204
+ # Cassandra::UDT.new(['street', '123 Main St.'],
205
+ # ['city', 'Whatever'],
206
+ # ['state', 'XZ'],
207
+ # ['zip', '10020'])
193
208
  #
194
- # Cassandra::UDT.new([:street, '123 Main St.'], [:city, 'Whatever'], [:state, 'XZ'], [:zip, '10020'])
209
+ # Cassandra::UDT.new([:street, '123 Main St.'],
210
+ # [:city, 'Whatever'],
211
+ # [:state, 'XZ'],
212
+ # [:zip, '10020'])
195
213
  #
196
- # Cassandra::UDT.new([['street', '123 Main St.'], ['city', 'Whatever'], ['state', 'XZ'], ['zip', '10020']])
214
+ # Cassandra::UDT.new([['street', '123 Main St.'],
215
+ # ['city', 'Whatever'],
216
+ # ['state', 'XZ'],
217
+ # ['zip', '10020']])
197
218
  #
198
- # Cassandra::UDT.new([[:street, '123 Main St.'], [:city, 'Whatever'], [:state, 'XZ'], [:zip, '10020']])
219
+ # Cassandra::UDT.new([[:street, '123 Main St.'],
220
+ # [:city, 'Whatever'],
221
+ # [:state, 'XZ'],
222
+ # [:zip, '10020']])
199
223
  def initialize(*values)
200
224
  values = Array(values.first) if values.one?
201
225
 
@@ -313,9 +337,7 @@ module Cassandra
313
337
  def fetch(field)
314
338
  case field
315
339
  when ::Integer
316
- if field >= 0 && field < @values.size
317
- raise ::IndexError, "Field index #{field.inspect} is not present"
318
- end
340
+ raise ::IndexError, "Field index #{field.inspect} is not present" if field >= 0 && field < @values.size
319
341
 
320
342
  @values[field][1]
321
343
  when ::String
@@ -361,9 +383,7 @@ module Cassandra
361
383
  def []=(field, value)
362
384
  case field
363
385
  when ::Integer
364
- if field < 0 || field >= @values.size
365
- raise ::IndexError, "Field index #{field.inspect} is not present"
366
- end
386
+ raise ::IndexError, "Field index #{field.inspect} is not present" if field < 0 || field >= @values.size
367
387
 
368
388
  @values[field][1] = value
369
389
  when ::String