aerospike 3.0.0 → 4.0.0

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +13 -9
  4. data/lib/aerospike/batch_attr.rb +292 -0
  5. data/lib/aerospike/batch_delete.rb +48 -0
  6. data/lib/aerospike/batch_read.rb +97 -0
  7. data/lib/aerospike/batch_record.rb +83 -0
  8. data/lib/aerospike/batch_results.rb +38 -0
  9. data/lib/aerospike/batch_udf.rb +76 -0
  10. data/lib/aerospike/batch_write.rb +79 -0
  11. data/lib/aerospike/cdt/bit_operation.rb +4 -5
  12. data/lib/aerospike/cdt/map_return_type.rb +8 -0
  13. data/lib/aerospike/client.rb +37 -51
  14. data/lib/aerospike/cluster.rb +50 -46
  15. data/lib/aerospike/command/batch_index_command.rb +6 -10
  16. data/lib/aerospike/command/batch_index_node.rb +3 -4
  17. data/lib/aerospike/command/batch_operate_command.rb +151 -0
  18. data/lib/aerospike/command/batch_operate_node.rb +51 -0
  19. data/lib/aerospike/command/command.rb +101 -87
  20. data/lib/aerospike/command/single_command.rb +1 -1
  21. data/lib/aerospike/exp/exp.rb +39 -41
  22. data/lib/aerospike/exp/exp_bit.rb +24 -24
  23. data/lib/aerospike/exp/exp_hll.rb +12 -12
  24. data/lib/aerospike/exp/exp_list.rb +101 -92
  25. data/lib/aerospike/exp/exp_map.rb +118 -121
  26. data/lib/aerospike/exp/operation.rb +2 -2
  27. data/lib/aerospike/info.rb +2 -4
  28. data/lib/aerospike/node.rb +7 -3
  29. data/lib/aerospike/operation.rb +38 -0
  30. data/lib/aerospike/policy/batch_delete_policy.rb +71 -0
  31. data/lib/aerospike/policy/batch_policy.rb +53 -4
  32. data/lib/aerospike/{command/batch_direct_node.rb → policy/batch_read_policy.rb} +17 -19
  33. data/lib/aerospike/policy/batch_udf_policy.rb +75 -0
  34. data/lib/aerospike/policy/batch_write_policy.rb +105 -0
  35. data/lib/aerospike/policy/policy.rb +3 -40
  36. data/lib/aerospike/query/server_command.rb +1 -0
  37. data/lib/aerospike/query/statement.rb +5 -21
  38. data/lib/aerospike/utils/buffer.rb +15 -15
  39. data/lib/aerospike/version.rb +1 -1
  40. data/lib/aerospike.rb +13 -12
  41. metadata +16 -14
  42. data/lib/aerospike/command/batch_direct_command.rb +0 -105
  43. data/lib/aerospike/command/batch_direct_exists_command.rb +0 -51
  44. data/lib/aerospike/query/pred_exp/and_or.rb +0 -32
  45. data/lib/aerospike/query/pred_exp/geo_json_value.rb +0 -41
  46. data/lib/aerospike/query/pred_exp/integer_value.rb +0 -32
  47. data/lib/aerospike/query/pred_exp/op.rb +0 -27
  48. data/lib/aerospike/query/pred_exp/regex.rb +0 -32
  49. data/lib/aerospike/query/pred_exp/regex_flags.rb +0 -23
  50. data/lib/aerospike/query/pred_exp/string_value.rb +0 -29
  51. data/lib/aerospike/query/pred_exp.rb +0 -192
@@ -16,7 +16,7 @@
16
16
 
17
17
  module Aerospike
18
18
 
19
- # List expression generator. See {@link Exp}.
19
+ # List expression generator. See {Exp}.
20
20
  #
21
21
  # The bin expression argument in these methods can be a reference to a bin or the
22
22
  # result of another expression. Expressions that modify bin values are only used
@@ -50,74 +50,74 @@ module Aerospike
50
50
  # Create expression that appends value to end of list.
51
51
  def self.append(value, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
52
52
  bytes = Exp.pack(ctx, APPEND, value, policy.order, policy.flags)
53
- self.add_write(bin, bytes, ctx)
53
+ add_write(bin, bytes, ctx)
54
54
  end
55
55
 
56
56
  # Create expression that appends list items to end of list.
57
57
  def self.append_items(list, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
58
58
  bytes = Exp.pack(ctx, APPEND_ITEMS, list, policy.order, policy.flags)
59
- self.add_write(bin, bytes, ctx)
59
+ add_write(bin, bytes, ctx)
60
60
  end
61
61
 
62
62
  # Create expression that inserts value to specified index of list.
63
63
  def self.insert(index, value, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
64
64
  bytes = Exp.pack(ctx, INSERT, index, value, policy.flags)
65
- self.add_write(bin, bytes, ctx)
65
+ add_write(bin, bytes, ctx)
66
66
  end
67
67
 
68
68
  # Create expression that inserts each input list item starting at specified index of list.
69
69
  def self.insert_items(index, list, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
70
70
  bytes = Exp.pack(ctx, INSERT_ITEMS, index, list, policy.flags)
71
- self.add_write(bin, bytes, ctx)
71
+ add_write(bin, bytes, ctx)
72
72
  end
73
73
 
74
74
  # Create expression that increments list[index] by value.
75
75
  # Value expression should resolve to a number.
76
76
  def self.increment(index, value, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
77
77
  bytes = Exp.pack(ctx, INCREMENT, index, value, policy.order, policy.flags)
78
- self.add_write(bin, bytes, ctx)
78
+ add_write(bin, bytes, ctx)
79
79
  end
80
80
 
81
81
  # Create expression that sets item value at specified index in list.
82
82
  def self.set(index, value, bin, ctx: nil, policy: CDT::ListPolicy::DEFAULT)
83
83
  bytes = Exp.pack(ctx, SET, index, value, policy.flags)
84
- self.add_write(bin, bytes, ctx)
84
+ add_write(bin, bytes, ctx)
85
85
  end
86
86
 
87
87
  # Create expression that removes all items in list.
88
88
  def self.clear(bin, ctx: nil)
89
89
  bytes = Exp.pack(ctx, CLEAR)
90
- self.add_write(bin, bytes, ctx)
90
+ add_write(bin, bytes, ctx)
91
91
  end
92
92
 
93
93
  # Create expression that sorts list according to sort_flags.
94
94
  #
95
- # @param sort_flags sort flags. See {@link ListSortFlagsend.
95
+ # @param sort_flags sort flags. See {ListSortFlagsend.
96
96
  # @param bin bin or list value expression
97
97
  # @param ctx optional context path for nested CDT
98
98
  def self.sort(sort_flags, bin, ctx: nil)
99
99
  bytes = Exp.pack(ctx, SORT, sort_flags)
100
- self.add_write(bin, bytes, ctx)
100
+ add_write(bin, bytes, ctx)
101
101
  end
102
102
 
103
103
  # Create expression that removes list items identified by value.
104
104
  def self.remove_by_value(value, bin, ctx: nil)
105
105
  bytes = Exp.pack(ctx, REMOVE_BY_VALUE, CDT::ListReturnType::NONE, value)
106
- self.add_write(bin, bytes, ctx)
106
+ add_write(bin, bytes, ctx)
107
107
  end
108
108
 
109
109
  # Create expression that removes list items identified by values.
110
110
  def self.remove_by_value_list(values, bin, ctx: nil)
111
111
  bytes = Exp.pack(ctx, REMOVE_BY_VALUE_LIST, CDT::ListReturnType::NONE, values)
112
- self.add_write(bin, bytes, ctx)
112
+ add_write(bin, bytes, ctx)
113
113
  end
114
114
 
115
115
  # Create expression that removes list items identified by value range (value_begin inclusive, value_end exclusive).
116
116
  # If value_begin is nil, the range is less than value_end. If value_end is nil, the range is
117
117
  # greater than equal to value_begin.
118
118
  def self.remove_by_value_range(value_begin, value_end, bin, ctx: nil)
119
- bytes = self.pack_range_operation(REMOVE_BY_VALUE_INTERVAL, CDT::ListReturnType::NONE, value_begin, value_end, ctx)
120
- self.add_write(bin, bytes, ctx)
119
+ bytes = pack_range_operation(REMOVE_BY_VALUE_INTERVAL, CDT::ListReturnType::NONE, value_begin, value_end, ctx)
120
+ add_write(bin, bytes, ctx)
121
121
  end
122
122
 
123
123
  # Create expression that removes list items nearest to value and greater by relative rank with a count limit if provided.
@@ -132,44 +132,44 @@ module Aerospike
132
132
  # (3,3,7) = [11,15]
133
133
  # (3,-3,2) = []
134
134
  def self.remove_by_value_relative_rank_range(value, rank, bin, ctx: nil, count: nil)
135
- unless count.nil?
136
- bytes = Exp.pack(ctx, REMOVE_BY_VALUE_REL_RANK_RANGE, CDT::ListReturnType::NONE, value, rank, count)
137
- else
138
- bytes = Exp.pack(ctx, REMOVE_BY_VALUE_REL_RANK_RANGE, CDT::ListReturnType::NONE, value, rank)
139
- end
140
- self.add_write(bin, bytes, ctx)
135
+ bytes = if count.nil?
136
+ Exp.pack(ctx, REMOVE_BY_VALUE_REL_RANK_RANGE, CDT::ListReturnType::NONE, value, rank)
137
+ else
138
+ Exp.pack(ctx, REMOVE_BY_VALUE_REL_RANK_RANGE, CDT::ListReturnType::NONE, value, rank, count)
139
+ end
140
+ add_write(bin, bytes, ctx)
141
141
  end
142
142
 
143
143
  # Create expression that removes list item identified by index.
144
144
  def self.remove_by_index(index, bin, ctx: nil)
145
145
  bytes = Exp.pack(ctx, REMOVE_BY_INDEX, CDT::ListReturnType::NONE, index)
146
- self.add_write(bin, bytes, ctx)
146
+ add_write(bin, bytes, ctx)
147
147
  end
148
148
 
149
149
  # Create expression that removes "count" list items starting at specified index.
150
150
  def self.remove_by_index_range(index, bin, ctx: nil, count: nil)
151
- unless count.nil?
152
- bytes = Exp.pack(ctx, REMOVE_BY_INDEX_RANGE, CDT::ListReturnType::NONE, index, count)
153
- else
154
- bytes = Exp.pack(ctx, REMOVE_BY_INDEX_RANGE, CDT::ListReturnType::NONE, index)
155
- end
156
- self.add_write(bin, bytes, ctx)
151
+ bytes = if count.nil?
152
+ Exp.pack(ctx, REMOVE_BY_INDEX_RANGE, CDT::ListReturnType::NONE, index)
153
+ else
154
+ Exp.pack(ctx, REMOVE_BY_INDEX_RANGE, CDT::ListReturnType::NONE, index, count)
155
+ end
156
+ add_write(bin, bytes, ctx)
157
157
  end
158
158
 
159
159
  # Create expression that removes list item identified by rank.
160
160
  def self.remove_by_rank(rank, bin, ctx: nil)
161
161
  bytes = Exp.pack(ctx, REMOVE_BY_RANK, CDT::ListReturnType::NONE, rank)
162
- self.add_write(bin, bytes, ctx)
162
+ add_write(bin, bytes, ctx)
163
163
  end
164
164
 
165
165
  # Create expression that removes "count" list items starting at specified rank.
166
166
  def self.remove_by_rank_range(rank, bin, ctx: nil, count: nil)
167
- unless count.nil?
168
- bytes = Exp.pack(ctx, REMOVE_BY_RANK_RANGE, CDT::ListReturnType::NONE, rank, count)
169
- else
170
- bytes = Exp.pack(ctx, REMOVE_BY_RANK_RANGE, CDT::ListReturnType::NONE, rank)
171
- end
172
- self.add_write(bin, bytes, ctx)
167
+ bytes = if count.nil?
168
+ Exp.pack(ctx, REMOVE_BY_RANK_RANGE, CDT::ListReturnType::NONE, rank)
169
+ else
170
+ Exp.pack(ctx, REMOVE_BY_RANK_RANGE, CDT::ListReturnType::NONE, rank, count)
171
+ end
172
+ add_write(bin, bytes, ctx)
173
173
  end
174
174
 
175
175
  # Create expression that returns list size.
@@ -180,7 +180,7 @@ module Aerospike
180
180
  # end</pre>
181
181
  def self.size(bin, ctx: nil)
182
182
  bytes = Exp.pack(ctx, SIZE)
183
- self.add_read(bin, bytes, Exp::Type::INT)
183
+ add_read(bin, bytes, Exp::Type::INT)
184
184
  end
185
185
 
186
186
  # Create expression that selects list items identified by value and returns selected
@@ -193,13 +193,13 @@ module Aerospike
193
193
  # Exp.val(0))
194
194
  # end</pre>
195
195
  #
196
- # @param return_type metadata attributes to return. See {@link CDT::ListReturnType
196
+ # @param return_type metadata attributes to return. See {CDT::ListReturnType}
197
197
  # @param value search expression
198
198
  # @param bin list bin or list value expression
199
199
  # @param ctx optional context path for nested CDT
200
200
  def self.get_by_value(return_type, value, bin, ctx: nil)
201
201
  bytes = Exp.pack(ctx, GET_BY_VALUE, return_type, value)
202
- self.add_read(bin, bytes, get_value_type(return_type))
202
+ add_read(bin, bytes, get_value_type(return_type))
203
203
  end
204
204
 
205
205
  # Create expression that selects list items identified by value range and returns selected data
@@ -210,25 +210,25 @@ module Aerospike
210
210
  # ListExp.getByValueRange(CDT::ListReturnType::VALUE, Exp.val(10), Exp.val(20), Exp.listBin("a"))
211
211
  # end</pre>
212
212
  #
213
- # @param return_type metadata attributes to return. See {@link CDT::ListReturnType}
213
+ # @param return_type metadata attributes to return. See {CDT::ListReturnType}
214
214
  # @param value_begin begin expression inclusive. If nil, range is less than value_end.
215
215
  # @param value_end end expression exclusive. If nil, range is greater than equal to value_begin.
216
216
  # @param bin bin or list value expression
217
217
  # @param ctx optional context path for nested CDT
218
218
  def self.get_by_value_range(return_type, value_begin, value_end, bin, ctx: nil)
219
- bytes = self.pack_range_operation(GET_BY_VALUE_INTERVAL, return_type, value_begin, value_end, ctx)
220
- self.add_read(bin, bytes, get_value_type(return_type))
219
+ bytes = pack_range_operation(GET_BY_VALUE_INTERVAL, return_type, value_begin, value_end, ctx)
220
+ add_read(bin, bytes, get_value_type(return_type))
221
221
  end
222
222
 
223
223
  # Create expression that selects list items identified by values and returns selected data
224
224
  # specified by return_type.
225
225
  def self.get_by_value_list(return_type, values, bin, ctx: nil)
226
226
  bytes = Exp.pack(ctx, GET_BY_VALUE_LIST, return_type, values)
227
- self.add_read(bin, bytes, get_value_type(return_type))
227
+ add_read(bin, bytes, get_value_type(return_type))
228
228
  end
229
229
 
230
230
  # Create expression that selects list items nearest to value and greater by relative rank with a count limit
231
- # and returns selected data specified by return_type (See {@link CDT::ListReturnType).
231
+ # and returns selected data specified by return_type (See {CDT::ListReturnType}).
232
232
  #
233
233
  # Examples for ordered list [0,4,5,9,11,15]:
234
234
  #
@@ -240,12 +240,12 @@ module Aerospike
240
240
  # (3,3,7) = [11,15]
241
241
  # (3,-3,2) = []
242
242
  def self.get_by_value_relative_rank_range(return_type, value, rank, bin, ctx: nil, count: nil)
243
- unless count.nil?
244
- bytes = Exp.pack(ctx, GET_BY_VALUE_REL_RANK_RANGE, return_type, value, rank, count)
245
- else
246
- bytes = Exp.pack(ctx, GET_BY_VALUE_REL_RANK_RANGE, return_type, value, rank)
247
- end
248
- self.add_read(bin, bytes, get_value_type(return_type))
243
+ bytes = if count.nil?
244
+ Exp.pack(ctx, GET_BY_VALUE_REL_RANK_RANGE, return_type, value, rank)
245
+ else
246
+ Exp.pack(ctx, GET_BY_VALUE_REL_RANK_RANGE, return_type, value, rank, count)
247
+ end
248
+ add_read(bin, bytes, get_value_type(return_type))
249
249
  end
250
250
 
251
251
  # Create expression that selects list item identified by index and returns
@@ -258,32 +258,32 @@ module Aerospike
258
258
  # Exp.val(5))
259
259
  # end</pre>
260
260
  #
261
- # @param return_type metadata attributes to return. See {@link CDT::ListReturnTypeend
261
+ # @param return_type metadata attributes to return. See {CDT::ListReturnType}
262
262
  # @param value_type expected type of value
263
263
  # @param index list index expression
264
264
  # @param bin list bin or list value expression
265
265
  # @param ctx optional context path for nested CDT
266
266
  def self.get_by_index(return_type, value_type, index, bin, ctx: nil)
267
267
  bytes = Exp.pack(ctx, GET_BY_INDEX, return_type, index)
268
- self.add_read(bin, bytes, value_type)
268
+ add_read(bin, bytes, value_type)
269
269
  end
270
270
 
271
271
  # Create expression that selects list items starting at specified index to the end of list
272
- # and returns selected data specified by return_type (See {@link CDT::ListReturnTypeend).
272
+ # and returns selected data specified by return_type (See {CDT::ListReturnType}).
273
273
  def self.get_by_index_range(return_type, index, bin, ctx: nil)
274
274
  bytes = Exp.pack(ctx, GET_BY_INDEX_RANGE, return_type, index)
275
- self.add_read(bin, bytes, get_value_type(return_type))
275
+ add_read(bin, bytes, get_value_type(return_type))
276
276
  end
277
277
 
278
278
  # Create expression that selects "count" list items starting at specified index
279
- # and returns selected data specified by return_type (See {@link CDT::ListReturnTypeend).
279
+ # and returns selected data specified by return_type (See {CDT::ListReturnType}).
280
280
  def self.get_by_index_range(return_type, index, bin, ctx: nil, count: nil)
281
- unless count.nil?
282
- bytes = Exp.pack(ctx, GET_BY_INDEX_RANGE, return_type, index, count)
283
- else
284
- bytes = Exp.pack(ctx, GET_BY_INDEX_RANGE, return_type, index)
285
- end
286
- self.add_read(bin, bytes, get_value_type(return_type))
281
+ bytes = if count.nil?
282
+ Exp.pack(ctx, GET_BY_INDEX_RANGE, return_type, index)
283
+ else
284
+ Exp.pack(ctx, GET_BY_INDEX_RANGE, return_type, index, count)
285
+ end
286
+ add_read(bin, bytes, get_value_type(return_type))
287
287
  end
288
288
 
289
289
  # Create expression that selects list item identified by rank and returns selected
@@ -294,32 +294,32 @@ module Aerospike
294
294
  # ListExp.getByRank(CDT::ListReturnType::VALUE, Type.STRING, Exp.val(0), Exp.listBin("a"))
295
295
  # end</pre>
296
296
  #
297
- # @param return_type metadata attributes to return. See {@link CDT::ListReturnTypeend
297
+ # @param return_type metadata attributes to return. See {CDT::ListReturnType}
298
298
  # @param value_type expected type of value
299
299
  # @param rank rank expression
300
300
  # @param bin list bin or list value expression
301
301
  # @param ctx optional context path for nested CDT
302
302
  def self.get_by_rank(return_type, value_type, rank, bin, ctx: nil)
303
303
  bytes = Exp.pack(ctx, GET_BY_RANK, return_type, rank)
304
- self.add_read(bin, bytes, value_type)
304
+ add_read(bin, bytes, value_type)
305
305
  end
306
306
 
307
307
  # Create expression that selects list items starting at specified rank to the last ranked item
308
- # and returns selected data specified by return_type (See {@link CDT::ListReturnTypeend).
308
+ # and returns selected data specified by return_type (See {CDT::ListReturnType}).
309
309
  def self.get_by_rank_range(return_type, rank, bin, ctx: nil)
310
310
  bytes = Exp.pack(ctx, GET_BY_RANK_RANGE, return_type, rank)
311
- self.add_read(bin, bytes, get_value_type(return_type))
311
+ add_read(bin, bytes, get_value_type(return_type))
312
312
  end
313
313
 
314
314
  # Create expression that selects "count" list items starting at specified rank and returns
315
- # selected data specified by return_type (See {@link CDT::ListReturnTypeend).
315
+ # selected data specified by return_type (See {CDT::ListReturnType}).
316
316
  def self.get_by_rank_range(return_type, rank, bin, ctx: nil, count: nil)
317
- unless count.nil?
318
- bytes = Exp.pack(ctx, GET_BY_RANK_RANGE, return_type, rank, count)
319
- else
320
- bytes = Exp.pack(ctx, GET_BY_RANK_RANGE, return_type, rank)
321
- end
322
- self.add_read(bin, bytes, get_value_type(return_type))
317
+ bytes = if count.nil?
318
+ Exp.pack(ctx, GET_BY_RANK_RANGE, return_type, rank)
319
+ else
320
+ Exp.pack(ctx, GET_BY_RANK_RANGE, return_type, rank, count)
321
+ end
322
+ add_read(bin, bytes, get_value_type(return_type))
323
323
  end
324
324
 
325
325
  private
@@ -336,7 +336,7 @@ module Aerospike
336
336
  SIZE = 16
337
337
  GET_BY_INDEX = 19
338
338
  GET_BY_RANK = 21
339
- GET_BY_VALUE = 22 # GET_ALL_BY_VALUE on server
339
+ GET_BY_VALUE = 22 # GET_ALL_BY_VALUE on server
340
340
  GET_BY_VALUE_LIST = 23
341
341
  GET_BY_INDEX_RANGE = 24
342
342
  GET_BY_VALUE_INTERVAL = 25
@@ -352,11 +352,11 @@ module Aerospike
352
352
  REMOVE_BY_VALUE_REL_RANK_RANGE = 40
353
353
 
354
354
  def self.add_write(bin, bytes, ctx)
355
- if ctx.to_a.empty?
356
- ret_type = Exp::Type::LIST
357
- else
358
- ret_type = ((ctx[0].id & 0x10) == 0) ? Exp::Type::MAP : Exp::Type::LIST
359
- end
355
+ ret_type = if ctx.to_a.empty?
356
+ Exp::Type::LIST
357
+ else
358
+ (ctx[0].id & 0x10) == 0 ? Exp::Type::MAP : Exp::Type::LIST
359
+ end
360
360
  Exp::Module.new(bin, bytes, ret_type, MODULE | Exp::MODIFY)
361
361
  end
362
362
 
@@ -365,17 +365,28 @@ module Aerospike
365
365
  end
366
366
 
367
367
  def self.get_value_type(return_type)
368
- t = return_type & ~CDT::ListReturnType::INVERTED
369
- case t
370
- when CDT::ListReturnType::INDEX, CDT::ListReturnType::REVERSE_INDEX, CDT::ListReturnType::RANK, CDT::ListReturnType::REVERSE_RANK, CDT::ListReturnType::VALUE
368
+ t = return_type & ~CDT::ListReturnType::INVERTED
369
+ case t
370
+ when ListReturnType::INDEX,
371
+ ListReturnType::REVERSE_INDEX,
372
+ ListReturnType::RANK,
373
+ ListReturnType::REVERSE_RANK
374
+ # This method only called from expressions that can return multiple integers (ie list).
371
375
  Exp::Type::LIST
372
- when CDT::ListReturnType::COUNT
373
- Exp::Type::INT
374
- when CDT::ListReturnType::EXISTS
376
+
377
+ when ListReturnType::COUNT
378
+ Exp::Type::INT
379
+
380
+ when ListReturnType::VALUE
381
+ # This method only called from expressions that can return multiple objects (ie list)::
382
+ Exp::Type::LIST
383
+
384
+ when ListReturnType::EXISTS
375
385
  Exp::Type::BOOL
376
- else
377
- raise Aerospike::Exceptions::Aerospike.new(Aerospike::ResultCode::SERVER_ERROR, "Invalid MapReturnType: #{return_type}")
378
- end
386
+
387
+ else
388
+ raise Exceptions::Aerospike.new(Aerospike::ResultCode::PARAMETER_ERROR, "Invalid ListReturnType: #{return_type}")
389
+ end
379
390
  end
380
391
 
381
392
  def self.pack_range_operation(command, return_type, value_begin, value_end, ctx)
@@ -385,14 +396,12 @@ module Aerospike
385
396
  packer.write(command)
386
397
  packer.write(return_type)
387
398
 
388
- unless value_begin.nil?
389
- if value_begin.is_a?(Exp)
390
- value_begin.pack(packer)
391
- else
392
- Value.of(value_begin).pack(packer)
393
- end
394
- else
399
+ if value_begin.nil?
395
400
  packer.write(nil)
401
+ elsif value_begin.is_a?(Exp)
402
+ value_begin.pack(packer)
403
+ else
404
+ Value.of(value_begin).pack(packer)
396
405
  end
397
406
 
398
407
  unless value_end.nil?