aerospike 2.11.0 → 2.16.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -1
- data/README.md +1 -1
- data/lib/aerospike.rb +17 -4
- data/lib/aerospike/aerospike_exception.rb +7 -1
- data/lib/aerospike/atomic/atomic.rb +1 -1
- data/lib/aerospike/bin.rb +1 -1
- data/lib/aerospike/cdt/bit_operation.rb +376 -0
- data/lib/aerospike/cdt/bit_overflow_action.rb +46 -0
- data/lib/aerospike/cdt/bit_policy.rb +36 -0
- data/lib/aerospike/cdt/bit_resize_flags.rb +44 -0
- data/lib/aerospike/cdt/bit_write_flags.rb +51 -0
- data/lib/aerospike/cdt/context.rb +101 -0
- data/lib/aerospike/cdt/hll_operation.rb +200 -0
- data/lib/aerospike/cdt/hll_policy.rb +34 -0
- data/lib/aerospike/cdt/hll_write_flags.rb +53 -0
- data/lib/aerospike/cdt/list_operation.rb +127 -97
- data/lib/aerospike/cdt/list_sort_flags.rb +10 -2
- data/lib/aerospike/cdt/map_operation.rb +154 -93
- data/lib/aerospike/cdt/map_order.rb +1 -1
- data/lib/aerospike/cdt/map_policy.rb +1 -1
- data/lib/aerospike/cdt/map_return_type.rb +1 -1
- data/lib/aerospike/cdt/map_write_mode.rb +1 -1
- data/lib/aerospike/client.rb +33 -17
- data/lib/aerospike/cluster.rb +139 -17
- data/lib/aerospike/cluster/partition.rb +1 -1
- data/lib/aerospike/cluster/partition_parser.rb +169 -0
- data/lib/aerospike/cluster/rack_parser.rb +117 -0
- data/lib/aerospike/command/admin_command.rb +1 -1
- data/lib/aerospike/command/batch_direct_command.rb +2 -1
- data/lib/aerospike/command/batch_direct_exists_command.rb +1 -1
- data/lib/aerospike/command/batch_direct_node.rb +3 -3
- data/lib/aerospike/command/batch_index_command.rb +11 -2
- data/lib/aerospike/command/batch_index_node.rb +2 -2
- data/lib/aerospike/command/batch_item.rb +1 -1
- data/lib/aerospike/command/command.rb +168 -12
- data/lib/aerospike/command/delete_command.rb +21 -5
- data/lib/aerospike/command/execute_command.rb +1 -1
- data/lib/aerospike/command/exists_command.rb +21 -5
- data/lib/aerospike/command/field_type.rb +2 -1
- data/lib/aerospike/command/multi_command.rb +55 -5
- data/lib/aerospike/command/operate_command.rb +6 -1
- data/lib/aerospike/command/read_command.rb +63 -20
- data/lib/aerospike/command/read_header_command.rb +18 -6
- data/lib/aerospike/command/roles.rb +1 -1
- data/lib/aerospike/command/single_command.rb +9 -3
- data/lib/aerospike/command/touch_command.rb +48 -4
- data/lib/aerospike/command/unsupported_particle_type_validator.rb +1 -1
- data/lib/aerospike/command/write_command.rb +13 -4
- data/lib/aerospike/connection/create.rb +1 -1
- data/lib/aerospike/features.rb +6 -1
- data/lib/aerospike/geo_json.rb +1 -1
- data/lib/aerospike/host.rb +1 -1
- data/lib/aerospike/info.rb +1 -1
- data/lib/aerospike/key.rb +1 -1
- data/lib/aerospike/language.rb +1 -1
- data/lib/aerospike/node.rb +21 -7
- data/lib/aerospike/node/rebalance.rb +50 -0
- data/lib/aerospike/node/refresh/info.rb +4 -1
- data/lib/aerospike/node/refresh/partitions.rb +6 -15
- data/lib/aerospike/node/refresh/racks.rb +47 -0
- data/lib/aerospike/node/refresh/reset.rb +1 -0
- data/lib/aerospike/node/verify/rebalance_generation.rb +43 -0
- data/lib/aerospike/node_validator.rb +4 -19
- data/lib/aerospike/operation.rb +13 -3
- data/lib/aerospike/policy/admin_policy.rb +1 -1
- data/lib/aerospike/policy/batch_policy.rb +1 -1
- data/lib/aerospike/policy/client_policy.rb +16 -1
- data/lib/aerospike/policy/commit_level.rb +1 -1
- data/lib/aerospike/policy/consistency_level.rb +1 -1
- data/lib/aerospike/policy/generation_policy.rb +1 -1
- data/lib/aerospike/policy/operate_policy.rb +1 -1
- data/lib/aerospike/policy/policy.rb +64 -2
- data/lib/aerospike/policy/priority.rb +1 -1
- data/lib/aerospike/policy/query_policy.rb +8 -1
- data/lib/aerospike/policy/record_bin_multiplicity.rb +1 -1
- data/lib/aerospike/policy/record_exists_action.rb +1 -1
- data/lib/aerospike/policy/replica.rb +45 -0
- data/lib/aerospike/policy/scan_policy.rb +8 -1
- data/lib/aerospike/policy/write_policy.rb +1 -1
- data/lib/aerospike/query/filter.rb +1 -1
- data/lib/aerospike/query/query_command.rb +16 -5
- data/lib/aerospike/query/recordset.rb +1 -1
- data/lib/aerospike/query/scan_command.rb +1 -1
- data/lib/aerospike/query/statement.rb +9 -2
- data/lib/aerospike/query/stream_command.rb +1 -1
- data/lib/aerospike/record.rb +1 -1
- data/lib/aerospike/result_code.rb +26 -7
- data/lib/aerospike/socket/base.rb +4 -3
- data/lib/aerospike/task/execute_task.rb +1 -1
- data/lib/aerospike/task/index_task.rb +1 -1
- data/lib/aerospike/task/task.rb +1 -1
- data/lib/aerospike/task/udf_register_task.rb +1 -1
- data/lib/aerospike/task/udf_remove_task.rb +1 -1
- data/lib/aerospike/ttl.rb +1 -1
- data/lib/aerospike/udf.rb +1 -1
- data/lib/aerospike/user_role.rb +1 -1
- data/lib/aerospike/utils/buffer.rb +14 -4
- data/lib/aerospike/utils/packer.rb +1 -1
- data/lib/aerospike/utils/pool.rb +1 -1
- data/lib/aerospike/utils/unpacker.rb +1 -1
- data/lib/aerospike/value/particle_type.rb +2 -2
- data/lib/aerospike/value/value.rb +165 -33
- data/lib/aerospike/version.rb +1 -1
- metadata +20 -8
- data/lib/aerospike/cluster/partition_tokenizer_new.rb +0 -130
- data/lib/aerospike/cluster/partition_tokenizer_old.rb +0 -135
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2020 Aerospike, Inc.
|
4
|
+
#
|
5
|
+
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
6
|
+
# license agreements.
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
9
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
10
|
+
# the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
16
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
17
|
+
# License for the specific language governing permissions and limitations under
|
18
|
+
# the License.
|
19
|
+
|
20
|
+
module Aerospike
|
21
|
+
module CDT
|
22
|
+
class HLLPolicy
|
23
|
+
|
24
|
+
attr_accessor :flags
|
25
|
+
|
26
|
+
def initialize(write_flags: HLLWriteFlags::DEFAULT)
|
27
|
+
@flags = write_flags
|
28
|
+
end
|
29
|
+
|
30
|
+
DEFAULT = HLLPolicy.new
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright 2020 Aerospike, Inc.
|
3
|
+
#
|
4
|
+
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
5
|
+
# license agreements.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
8
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
9
|
+
# the License at http:#www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14
|
+
# License for the specific language governing permissions and limitations under
|
15
|
+
# the License.
|
16
|
+
|
17
|
+
module Aerospike
|
18
|
+
module CDT
|
19
|
+
|
20
|
+
##
|
21
|
+
# Map write bit flags.
|
22
|
+
# Requires server versions >= 4.3.
|
23
|
+
module HLLWriteFlags
|
24
|
+
|
25
|
+
##
|
26
|
+
# Default is Default. Allow create or update.
|
27
|
+
DEFAULT = 0
|
28
|
+
|
29
|
+
##
|
30
|
+
# CREATE_ONLY behaves like the following:
|
31
|
+
# If the bin already exists, the operation will be denied.
|
32
|
+
# If the bin does not exist, a new bin will be created.
|
33
|
+
CREATE_ONLY = 1
|
34
|
+
|
35
|
+
##
|
36
|
+
# UPDATE_ONLY behaves like the following:
|
37
|
+
# If the bin already exists, the bin will be overwritten.
|
38
|
+
# If the bin does not exist, the operation will be denied.
|
39
|
+
UPDATE_ONLY = 2
|
40
|
+
|
41
|
+
##
|
42
|
+
# NO_FAIL does not raise error if operation is denied.
|
43
|
+
NO_FAIL = 4
|
44
|
+
|
45
|
+
##
|
46
|
+
# ALLOW_FOLD allows the resulting set to be the minimum of provided index bits.
|
47
|
+
# Also, allow the usage of less precise HLL algorithms when minHash bits
|
48
|
+
# of all participating sets do not match.
|
49
|
+
ALLOW_FOLD = 8
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright 2016-
|
3
|
+
# Copyright 2016-2020 Aerospike, Inc.
|
4
4
|
#
|
5
5
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
6
6
|
# license agreements.
|
@@ -21,23 +21,32 @@ module Aerospike
|
|
21
21
|
module CDT
|
22
22
|
|
23
23
|
##
|
24
|
-
# List
|
25
|
-
#
|
26
|
-
#
|
24
|
+
# List operations support negative indexing. If the index is negative, the
|
25
|
+
# resolved index starts backwards from end of list. If an index is out of bounds,
|
26
|
+
# a parameter error will be returned. If a range is partially out of bounds, the
|
27
|
+
# valid part of the range will be returned. Index/Range examples:
|
27
28
|
#
|
28
29
|
# Index/Range examples:
|
29
|
-
# * Index 0: First item in list.
|
30
|
-
# * Index 4: Fifth item in list.
|
31
|
-
# * Index -1: Last item in list.
|
32
|
-
# * Index -3: Third to last item in list.
|
33
|
-
# * Index 1 Count 2: Second and third items in list.
|
34
|
-
# * Index -3 Count 3: Last three items in list.
|
35
|
-
# * Index -5 Count 4: Range between fifth to last item to second to last
|
36
|
-
# item inclusive.
|
37
30
|
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
31
|
+
# Index 0: First item in list.
|
32
|
+
# Index 4: Fifth item in list.
|
33
|
+
# Index -1: Last item in list.
|
34
|
+
# Index -3: Third to last item in list.
|
35
|
+
# Index 1 Count 2: Second and third items in list.
|
36
|
+
# Index -3 Count 3: Last three items in list.
|
37
|
+
# Index -5 Count 4: Range between fifth to last item to second to last item inclusive.
|
38
|
+
#
|
39
|
+
# Nested CDT operations are supported by optional Ctx context arguments. Examples:
|
40
|
+
#
|
41
|
+
# bin = [[7,9,5],[1,2,3],[6,5,4,1]]
|
42
|
+
# Append 11 to last list.
|
43
|
+
# ListOperation.append("bin", 11, ctx: [Context.list_index(-1)])
|
44
|
+
# bin result = [[7,9,5],[1,2,3],[6,5,4,1,11]]
|
45
|
+
#
|
46
|
+
# bin = {key1:[[7,9,5],[13]], key2:[[9],[2,4],[6,1,9]], key3:[[6,5]]}
|
47
|
+
# Append 11 to lowest ranked list in map identified by "key2".
|
48
|
+
# ListOperation.append("bin", 11, ctx: [Context.map_key("key2"), Context.list_rank(0)])
|
49
|
+
# bin result = {key1:[[7,9,5],[13]], key2:[[9],[2,4,11],[6,1,9]], key3:[[6,5]]}
|
41
50
|
|
42
51
|
class ListOperation < Operation
|
43
52
|
|
@@ -75,13 +84,14 @@ module Aerospike
|
|
75
84
|
REMOVE_BY_RANK_RANGE = 39
|
76
85
|
REMOVE_BY_VALUE_REL_RANK_RANGE = 40
|
77
86
|
|
78
|
-
attr_reader :list_op, :arguments, :policy, :return_type
|
87
|
+
attr_reader :list_op, :arguments, :policy, :return_type, :ctx
|
79
88
|
|
80
|
-
def initialize(op_type, list_op, bin_name, *arguments, return_type: nil)
|
89
|
+
def initialize(op_type, list_op, bin_name, *arguments, return_type: nil, ctx: nil)
|
81
90
|
@op_type = op_type
|
82
91
|
@bin_name = bin_name
|
83
92
|
@bin_value = nil
|
84
93
|
@list_op = list_op
|
94
|
+
@ctx = ctx
|
85
95
|
@arguments = arguments
|
86
96
|
@return_type = return_type
|
87
97
|
end
|
@@ -90,19 +100,19 @@ module Aerospike
|
|
90
100
|
# Create a set list order operation.
|
91
101
|
# Server sets list order.
|
92
102
|
# Server returns null.
|
93
|
-
def self.set_order(bin_name, order)
|
94
|
-
ListOperation.new(Operation::CDT_MODIFY, SET_TYPE, bin_name, order)
|
103
|
+
def self.set_order(bin_name, order, ctx: nil)
|
104
|
+
ListOperation.new(Operation::CDT_MODIFY, SET_TYPE, bin_name, order, ctx: ctx)
|
95
105
|
end
|
96
106
|
|
97
107
|
##
|
98
108
|
# Create list append operation.
|
99
109
|
# Server appends value(s) to end of the list bin.
|
100
110
|
# Server returns list size.
|
101
|
-
def self.append(bin_name, *values, policy: ListPolicy::DEFAULT)
|
111
|
+
def self.append(bin_name, *values, ctx: nil, policy: ListPolicy::DEFAULT)
|
102
112
|
if values.length > 1
|
103
|
-
ListOperation.new(Operation::CDT_MODIFY, APPEND_ITEMS, bin_name, values, policy.order, policy.flags)
|
113
|
+
ListOperation.new(Operation::CDT_MODIFY, APPEND_ITEMS, bin_name, values, policy.order, policy.flags, ctx: ctx)
|
104
114
|
else
|
105
|
-
ListOperation.new(Operation::CDT_MODIFY, APPEND, bin_name, values.first, policy.order, policy.flags)
|
115
|
+
ListOperation.new(Operation::CDT_MODIFY, APPEND, bin_name, values.first, policy.order, policy.flags, ctx: ctx)
|
106
116
|
end
|
107
117
|
end
|
108
118
|
|
@@ -110,19 +120,19 @@ module Aerospike
|
|
110
120
|
# Create list insert operation.
|
111
121
|
# Server inserts value(s) at the specified index of the list bin.
|
112
122
|
# Server returns list size.
|
113
|
-
def self.insert(bin_name, index, *values, policy: ListPolicy::DEFAULT)
|
123
|
+
def self.insert(bin_name, index, *values, ctx: nil, policy: ListPolicy::DEFAULT)
|
114
124
|
if values.length > 1
|
115
|
-
ListOperation.new(Operation::CDT_MODIFY, INSERT_ITEMS, bin_name, index, values, policy.flags)
|
125
|
+
ListOperation.new(Operation::CDT_MODIFY, INSERT_ITEMS, bin_name, index, values, policy.flags, ctx: ctx)
|
116
126
|
else
|
117
|
-
ListOperation.new(Operation::CDT_MODIFY, INSERT, bin_name, index, values.first, policy.flags)
|
127
|
+
ListOperation.new(Operation::CDT_MODIFY, INSERT, bin_name, index, values.first, policy.flags, ctx: ctx)
|
118
128
|
end
|
119
129
|
end
|
120
130
|
|
121
131
|
##
|
122
132
|
# Create list pop operation.
|
123
133
|
# Server returns item at specified index and removes item from list bin.
|
124
|
-
def self.pop(bin_name, index)
|
125
|
-
ListOperation.new(Operation::CDT_MODIFY, POP, bin_name, index)
|
134
|
+
def self.pop(bin_name, index, ctx: nil)
|
135
|
+
ListOperation.new(Operation::CDT_MODIFY, POP, bin_name, index, ctx: ctx)
|
126
136
|
end
|
127
137
|
|
128
138
|
##
|
@@ -131,11 +141,11 @@ module Aerospike
|
|
131
141
|
# items from list bin. If "count" is not specified, the server returns
|
132
142
|
# items starting at the specified index to the end of the list and
|
133
143
|
# removes those items from the list bin.
|
134
|
-
def self.pop_range(bin_name, index, count=nil)
|
144
|
+
def self.pop_range(bin_name, index, count=nil, ctx: nil)
|
135
145
|
if count
|
136
|
-
ListOperation.new(Operation::CDT_MODIFY, POP_RANGE, bin_name, index, count)
|
146
|
+
ListOperation.new(Operation::CDT_MODIFY, POP_RANGE, bin_name, index, count, ctx: ctx)
|
137
147
|
else
|
138
|
-
ListOperation.new(Operation::CDT_MODIFY, POP_RANGE, bin_name, index)
|
148
|
+
ListOperation.new(Operation::CDT_MODIFY, POP_RANGE, bin_name, index, ctx: ctx)
|
139
149
|
end
|
140
150
|
end
|
141
151
|
|
@@ -143,8 +153,8 @@ module Aerospike
|
|
143
153
|
# Create list remove operation.
|
144
154
|
# Server removes item at specified index from list bin.
|
145
155
|
# Server returns number of items removed.
|
146
|
-
def self.remove(bin_name, index)
|
147
|
-
ListOperation.new(Operation::CDT_MODIFY, REMOVE, bin_name, index)
|
156
|
+
def self.remove(bin_name, index, ctx: nil)
|
157
|
+
ListOperation.new(Operation::CDT_MODIFY, REMOVE, bin_name, index, ctx: ctx)
|
148
158
|
end
|
149
159
|
|
150
160
|
##
|
@@ -153,11 +163,11 @@ module Aerospike
|
|
153
163
|
# "count" is not specified, the server removes all items starting at the
|
154
164
|
# specified index to the end of the list.
|
155
165
|
# Server returns number of items removed.
|
156
|
-
def self.remove_range(bin_name, index, count=nil)
|
166
|
+
def self.remove_range(bin_name, index, count=nil, ctx: nil)
|
157
167
|
if count
|
158
|
-
ListOperation.new(Operation::CDT_MODIFY, REMOVE_RANGE, bin_name, index, count)
|
168
|
+
ListOperation.new(Operation::CDT_MODIFY, REMOVE_RANGE, bin_name, index, count, ctx: ctx)
|
159
169
|
else
|
160
|
-
ListOperation.new(Operation::CDT_MODIFY, REMOVE_RANGE, bin_name, index)
|
170
|
+
ListOperation.new(Operation::CDT_MODIFY, REMOVE_RANGE, bin_name, index, ctx: ctx)
|
161
171
|
end
|
162
172
|
end
|
163
173
|
|
@@ -165,8 +175,8 @@ module Aerospike
|
|
165
175
|
# Create list set operation.
|
166
176
|
# Server sets item value at specified index in list bin.
|
167
177
|
# Server does not return a result by default.
|
168
|
-
def self.set(bin_name, index, value, policy: ListPolicy::DEFAULT)
|
169
|
-
ListOperation.new(Operation::CDT_MODIFY, SET, bin_name, index, value, policy.flags)
|
178
|
+
def self.set(bin_name, index, value, ctx: nil, policy: ListPolicy::DEFAULT)
|
179
|
+
ListOperation.new(Operation::CDT_MODIFY, SET, bin_name, index, value, policy.flags, ctx: ctx)
|
170
180
|
end
|
171
181
|
|
172
182
|
##
|
@@ -176,24 +186,24 @@ module Aerospike
|
|
176
186
|
# by index and count.
|
177
187
|
#
|
178
188
|
# Server returns number of items removed.
|
179
|
-
def self.trim(bin_name, index, count)
|
180
|
-
ListOperation.new(Operation::CDT_MODIFY, TRIM, bin_name, index, count)
|
189
|
+
def self.trim(bin_name, index, count, ctx: nil)
|
190
|
+
ListOperation.new(Operation::CDT_MODIFY, TRIM, bin_name, index, count, ctx: ctx)
|
181
191
|
end
|
182
192
|
|
183
193
|
##
|
184
194
|
# Create list clear operation.
|
185
195
|
# Server removes all items in the list bin.
|
186
196
|
# Server does not return a result by default.
|
187
|
-
def self.clear(bin_name)
|
188
|
-
ListOperation.new(Operation::CDT_MODIFY, CLEAR, bin_name)
|
197
|
+
def self.clear(bin_name, ctx: nil)
|
198
|
+
ListOperation.new(Operation::CDT_MODIFY, CLEAR, bin_name, ctx: ctx)
|
189
199
|
end
|
190
200
|
|
191
201
|
##
|
192
202
|
# Create list increment operation.
|
193
203
|
# Server increments list[index] by value. If not specified, value defaults to 1.
|
194
204
|
# Server returns the value of list[index] after the operation.
|
195
|
-
def self.increment(bin_name, index, value = 1, policy: ListPolicy::DEFAULT)
|
196
|
-
ListOperation.new(Operation::CDT_MODIFY, INCREMENT, bin_name, index, value, policy.order, policy.flags)
|
205
|
+
def self.increment(bin_name, index, value = 1, ctx: nil, policy: ListPolicy::DEFAULT)
|
206
|
+
ListOperation.new(Operation::CDT_MODIFY, INCREMENT, bin_name, index, value, policy.order, policy.flags, ctx: ctx)
|
197
207
|
end
|
198
208
|
|
199
209
|
##
|
@@ -207,15 +217,15 @@ module Aerospike
|
|
207
217
|
##
|
208
218
|
# Create list size operation.
|
209
219
|
# Server returns size of list.
|
210
|
-
def self.size(bin_name)
|
211
|
-
ListOperation.new(Operation::CDT_READ, SIZE, bin_name)
|
220
|
+
def self.size(bin_name, ctx: nil)
|
221
|
+
ListOperation.new(Operation::CDT_READ, SIZE, bin_name, ctx: ctx)
|
212
222
|
end
|
213
223
|
|
214
224
|
##
|
215
225
|
# Create list get operation.
|
216
226
|
# Server returns the item at the specified index in the list bin.
|
217
|
-
def self.get(bin_name, index)
|
218
|
-
ListOperation.new(Operation::CDT_READ, GET, bin_name, index)
|
227
|
+
def self.get(bin_name, index, ctx: nil)
|
228
|
+
ListOperation.new(Operation::CDT_READ, GET, bin_name, index, ctx: ctx)
|
219
229
|
end
|
220
230
|
|
221
231
|
##
|
@@ -223,11 +233,11 @@ module Aerospike
|
|
223
233
|
# Server returns "count" items starting at the specified index in the
|
224
234
|
# list bin. If "count" is not specified, the server returns all items
|
225
235
|
# starting at the specified index to the end of the list.
|
226
|
-
def self.get_range(bin_name, index, count=nil)
|
236
|
+
def self.get_range(bin_name, index, count=nil, ctx: nil)
|
227
237
|
if count
|
228
|
-
ListOperation.new(Operation::CDT_READ, GET_RANGE, bin_name, index, count)
|
238
|
+
ListOperation.new(Operation::CDT_READ, GET_RANGE, bin_name, index, count, ctx: ctx)
|
229
239
|
else
|
230
|
-
ListOperation.new(Operation::CDT_READ, GET_RANGE, bin_name, index)
|
240
|
+
ListOperation.new(Operation::CDT_READ, GET_RANGE, bin_name, index, ctx: ctx)
|
231
241
|
end
|
232
242
|
end
|
233
243
|
|
@@ -236,8 +246,8 @@ module Aerospike
|
|
236
246
|
# Server selects list item identified by index.
|
237
247
|
#
|
238
248
|
# Server returns selected data specified by return_type.
|
239
|
-
def self.get_by_index(bin_name, index, return_type: ListReturnType::NONE)
|
240
|
-
ListOperation.new(Operation::CDT_READ, GET_BY_INDEX, bin_name, index, return_type: return_type)
|
249
|
+
def self.get_by_index(bin_name, index, ctx: nil, return_type: ListReturnType::NONE)
|
250
|
+
ListOperation.new(Operation::CDT_READ, GET_BY_INDEX, bin_name, index, return_type: return_type, ctx: ctx)
|
241
251
|
end
|
242
252
|
|
243
253
|
# Create list get by index range operation.
|
@@ -245,11 +255,11 @@ module Aerospike
|
|
245
255
|
# Server selects list item identified by index range
|
246
256
|
#
|
247
257
|
# Server returns selected data specified by return_type.
|
248
|
-
def self.get_by_index_range(bin_name, index, count=nil, return_type: ListReturnType::NONE)
|
258
|
+
def self.get_by_index_range(bin_name, index, count=nil, ctx: nil, return_type: ListReturnType::NONE)
|
249
259
|
if count
|
250
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_INDEX_RANGE, bin_name, index, count, return_type: return_type)
|
260
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_INDEX_RANGE, bin_name, index, count, ctx: ctx, return_type: return_type)
|
251
261
|
else
|
252
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_INDEX_RANGE, bin_name, index, return_type: return_type)
|
262
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_INDEX_RANGE, bin_name, index, ctx: ctx, return_type: return_type)
|
253
263
|
end
|
254
264
|
end
|
255
265
|
|
@@ -258,8 +268,8 @@ module Aerospike
|
|
258
268
|
# Server selects list item identified by rank.
|
259
269
|
#
|
260
270
|
# Server returns selected data specified by return_type.
|
261
|
-
def self.get_by_rank(bin_name, rank, return_type: ListReturnType::NONE)
|
262
|
-
ListOperation.new(Operation::CDT_READ, GET_BY_RANK, bin_name, rank, return_type: return_type)
|
271
|
+
def self.get_by_rank(bin_name, rank, ctx: nil, return_type: ListReturnType::NONE)
|
272
|
+
ListOperation.new(Operation::CDT_READ, GET_BY_RANK, bin_name, rank, ctx: ctx, return_type: return_type)
|
263
273
|
end
|
264
274
|
|
265
275
|
# Create list get by rank range operation.
|
@@ -267,11 +277,11 @@ module Aerospike
|
|
267
277
|
# Server selects list item identified by rank range.
|
268
278
|
#
|
269
279
|
# Server returns selected data specified by return_type.
|
270
|
-
def self.get_by_rank_range(bin_name, rank, count=nil, return_type: ListReturnType::NONE)
|
280
|
+
def self.get_by_rank_range(bin_name, rank, count=nil, ctx: nil, return_type: ListReturnType::NONE)
|
271
281
|
if count
|
272
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_RANK_RANGE, bin_name, rank, count, return_type: return_type)
|
282
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_RANK_RANGE, bin_name, rank, count, ctx: ctx, return_type: return_type)
|
273
283
|
else
|
274
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_RANK_RANGE, bin_name, rank, return_type: return_type)
|
284
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_RANK_RANGE, bin_name, rank, ctx: ctx, return_type: return_type)
|
275
285
|
end
|
276
286
|
end
|
277
287
|
|
@@ -280,8 +290,8 @@ module Aerospike
|
|
280
290
|
# Server selects list items identified by value.
|
281
291
|
#
|
282
292
|
# Server returns selected data specified by return_type.
|
283
|
-
def self.get_by_value(bin_name, value, return_type: ListReturnType::NONE)
|
284
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE, bin_name, value, return_type: return_type)
|
293
|
+
def self.get_by_value(bin_name, value, ctx: nil, return_type: ListReturnType::NONE)
|
294
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE, bin_name, value, ctx: ctx, return_type: return_type)
|
285
295
|
end
|
286
296
|
|
287
297
|
# Create list get by value range operation.
|
@@ -292,11 +302,11 @@ module Aerospike
|
|
292
302
|
# equal to value_begin.
|
293
303
|
#
|
294
304
|
# Server returns selected data specified by return_type.
|
295
|
-
def self.get_by_value_range(bin_name, value_begin, value_end = nil, return_type: ListReturnType::NONE)
|
305
|
+
def self.get_by_value_range(bin_name, value_begin, value_end = nil, ctx: nil, return_type: ListReturnType::NONE)
|
296
306
|
if value_end
|
297
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_INTERVAL, bin_name, value_begin, value_end, return_type: return_type)
|
307
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_INTERVAL, bin_name, value_begin, value_end, ctx: ctx, return_type: return_type)
|
298
308
|
else
|
299
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_INTERVAL, bin_name, value_begin, return_type: return_type)
|
309
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_INTERVAL, bin_name, value_begin, ctx: ctx, return_type: return_type)
|
300
310
|
end
|
301
311
|
end
|
302
312
|
|
@@ -305,8 +315,8 @@ module Aerospike
|
|
305
315
|
# Server selects list items identified by values.
|
306
316
|
#
|
307
317
|
# Server returns selected data specified by return_type.
|
308
|
-
def self.get_by_value_list(bin_name, values, return_type: ListReturnType::NONE)
|
309
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_LIST, bin_name, values, return_type: return_type)
|
318
|
+
def self.get_by_value_list(bin_name, values, ctx: nil, return_type: ListReturnType::NONE)
|
319
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_LIST, bin_name, values, ctx: ctx, return_type: return_type)
|
310
320
|
end
|
311
321
|
|
312
322
|
# Create list get by value relative to rank range list operation.
|
@@ -339,11 +349,11 @@ module Aerospike
|
|
339
349
|
# <li>(3, 3) = [11, 15]</li>
|
340
350
|
# <li>(3, -3) = [0, 4, 5, 9, 11, 15]</li>
|
341
351
|
# </ul>
|
342
|
-
def self.get_by_value_rel_rank_range(bin_name, value, rank, count = nil, return_type: ListReturnType::NONE)
|
352
|
+
def self.get_by_value_rel_rank_range(bin_name, value, rank, count = nil, ctx: nil, return_type: ListReturnType::NONE)
|
343
353
|
if count
|
344
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, count, return_type: return_type)
|
354
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, count, ctx: ctx, return_type: return_type)
|
345
355
|
else
|
346
|
-
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, return_type: return_type)
|
356
|
+
InvertibleListOp.new(Operation::CDT_READ, GET_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, ctx: ctx, return_type: return_type)
|
347
357
|
end
|
348
358
|
end
|
349
359
|
|
@@ -352,8 +362,8 @@ module Aerospike
|
|
352
362
|
# Server removes list item identified by index.
|
353
363
|
#
|
354
364
|
# Server returns selected data specified by return_type.
|
355
|
-
def self.remove_by_index(bin_name, index, return_type: ListReturnType::NONE)
|
356
|
-
ListOperation.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX, bin_name, index, return_type: return_type)
|
365
|
+
def self.remove_by_index(bin_name, index, ctx: nil, return_type: ListReturnType::NONE)
|
366
|
+
ListOperation.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX, bin_name, index, ctx: ctx, return_type: return_type)
|
357
367
|
end
|
358
368
|
|
359
369
|
# Create list remove by index range operation.
|
@@ -361,11 +371,11 @@ module Aerospike
|
|
361
371
|
# Server removes list item identified by index range
|
362
372
|
#
|
363
373
|
# Server returns selected data specified by return_type.
|
364
|
-
def self.remove_by_index_range(bin_name, index, count=nil, return_type: ListReturnType::NONE)
|
374
|
+
def self.remove_by_index_range(bin_name, index, count=nil, ctx: nil, return_type: ListReturnType::NONE)
|
365
375
|
if count
|
366
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX_RANGE, bin_name, index, count, return_type: return_type)
|
376
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX_RANGE, bin_name, index, count, ctx: ctx, return_type: return_type)
|
367
377
|
else
|
368
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX_RANGE, bin_name, index, return_type: return_type)
|
378
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_INDEX_RANGE, bin_name, index, ctx: ctx, return_type: return_type)
|
369
379
|
end
|
370
380
|
end
|
371
381
|
|
@@ -374,8 +384,8 @@ module Aerospike
|
|
374
384
|
# Server removes list item identified by rank.
|
375
385
|
#
|
376
386
|
# Server returns selected data specified by return_type.
|
377
|
-
def self.remove_by_rank(bin_name, rank, return_type: ListReturnType::NONE)
|
378
|
-
ListOperation.new(Operation::CDT_MODIFY, REMOVE_BY_RANK, bin_name, rank, return_type: return_type)
|
387
|
+
def self.remove_by_rank(bin_name, rank, ctx: nil, return_type: ListReturnType::NONE)
|
388
|
+
ListOperation.new(Operation::CDT_MODIFY, REMOVE_BY_RANK, bin_name, rank, ctx: ctx, return_type: return_type)
|
379
389
|
end
|
380
390
|
|
381
391
|
# Create list remove by rank range operation.
|
@@ -383,11 +393,11 @@ module Aerospike
|
|
383
393
|
# Server removes list item identified by rank range.
|
384
394
|
#
|
385
395
|
# Server returns selected data specified by return_type.
|
386
|
-
def self.remove_by_rank_range(bin_name, rank, count=nil, return_type: ListReturnType::NONE)
|
396
|
+
def self.remove_by_rank_range(bin_name, rank, count=nil, ctx: nil, return_type: ListReturnType::NONE)
|
387
397
|
if count
|
388
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_RANK_RANGE, bin_name, rank, count, return_type: return_type)
|
398
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_RANK_RANGE, bin_name, rank, count, ctx: ctx, return_type: return_type)
|
389
399
|
else
|
390
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_RANK_RANGE, bin_name, rank, return_type: return_type)
|
400
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_RANK_RANGE, bin_name, rank, ctx: ctx, return_type: return_type)
|
391
401
|
end
|
392
402
|
end
|
393
403
|
|
@@ -396,8 +406,8 @@ module Aerospike
|
|
396
406
|
# Server removes list items identified by value.
|
397
407
|
#
|
398
408
|
# Server returns selected data specified by return_type.
|
399
|
-
def self.remove_by_value(bin_name, value, return_type: ListReturnType::NONE)
|
400
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE, bin_name, value, return_type: return_type)
|
409
|
+
def self.remove_by_value(bin_name, value, ctx: nil, return_type: ListReturnType::NONE)
|
410
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE, bin_name, value, ctx: ctx, return_type: return_type)
|
401
411
|
end
|
402
412
|
|
403
413
|
# Create list remove by value range operation.
|
@@ -408,11 +418,11 @@ module Aerospike
|
|
408
418
|
# equal to value_begin.
|
409
419
|
#
|
410
420
|
# Server returns selected data specified by return_type.
|
411
|
-
def self.remove_by_value_range(bin_name, value_begin, value_end = nil, return_type: ListReturnType::NONE)
|
421
|
+
def self.remove_by_value_range(bin_name, value_begin, value_end = nil, ctx: nil, return_type: ListReturnType::NONE)
|
412
422
|
if value_end
|
413
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_INTERVAL, bin_name, value_begin, value_end, return_type: return_type)
|
423
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_INTERVAL, bin_name, value_begin, value_end, ctx: ctx, return_type: return_type)
|
414
424
|
else
|
415
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_INTERVAL, bin_name, value_begin, return_type: return_type)
|
425
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_INTERVAL, bin_name, value_begin, ctx: ctx, return_type: return_type)
|
416
426
|
end
|
417
427
|
end
|
418
428
|
|
@@ -421,8 +431,8 @@ module Aerospike
|
|
421
431
|
# Server removes list items identified by values.
|
422
432
|
#
|
423
433
|
# Server returns selected data specified by return_type.
|
424
|
-
def self.remove_by_value_list(bin_name, values, return_type: ListReturnType::NONE)
|
425
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_LIST, bin_name, values, return_type: return_type)
|
434
|
+
def self.remove_by_value_list(bin_name, values, ctx: nil, return_type: ListReturnType::NONE)
|
435
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_LIST, bin_name, values, ctx: ctx, return_type: return_type)
|
426
436
|
end
|
427
437
|
|
428
438
|
# Create list remove by value relative to rank range list operation.
|
@@ -455,11 +465,11 @@ module Aerospike
|
|
455
465
|
# <li>(3, 3) = [11, 15]</li>
|
456
466
|
# <li>(3, -3) = [0, 4, 5, 9, 11, 15]</li>
|
457
467
|
# </ul>
|
458
|
-
def self.remove_by_value_rel_rank_range(bin_name, value, rank, count = nil, return_type: ListReturnType::NONE)
|
468
|
+
def self.remove_by_value_rel_rank_range(bin_name, value, rank, count = nil, ctx: nil, return_type: ListReturnType::NONE)
|
459
469
|
if count
|
460
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, count, return_type: return_type)
|
470
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, count, ctx: ctx, return_type: return_type)
|
461
471
|
else
|
462
|
-
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, return_type: return_type)
|
472
|
+
InvertibleListOp.new(Operation::CDT_MODIFY, REMOVE_BY_VALUE_REL_RANK_RANGE, bin_name, value, rank, ctx: ctx, return_type: return_type)
|
463
473
|
end
|
464
474
|
end
|
465
475
|
|
@@ -481,16 +491,36 @@ module Aerospike
|
|
481
491
|
|
482
492
|
def pack_bin_value
|
483
493
|
bytes = nil
|
494
|
+
|
495
|
+
args = arguments.dup
|
496
|
+
if return_type
|
497
|
+
rt = return_type
|
498
|
+
rt |= ListReturnType::INVERTED if invert_selection?
|
499
|
+
args.unshift(rt)
|
500
|
+
end
|
501
|
+
|
484
502
|
Packer.use do |packer|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
503
|
+
if @ctx != nil && @ctx.length > 0
|
504
|
+
packer.write_array_header(3)
|
505
|
+
Value.of(0xff).pack(packer)
|
506
|
+
|
507
|
+
packer.write_array_header(@ctx.length*2)
|
508
|
+
@ctx.each do |ctx|
|
509
|
+
Value.of(ctx.id).pack(packer)
|
510
|
+
Value.of(ctx.value).pack(packer)
|
511
|
+
end
|
512
|
+
|
513
|
+
packer.write_array_header(args.length+1)
|
514
|
+
Value.of(@list_op).pack(packer)
|
515
|
+
else
|
516
|
+
packer.write_raw_short(@list_op)
|
517
|
+
|
518
|
+
if args.length > 0
|
519
|
+
packer.write_array_header(args.length)
|
520
|
+
end
|
491
521
|
end
|
522
|
+
|
492
523
|
if args.length > 0
|
493
|
-
packer.write_array_header(args.length)
|
494
524
|
args.each do |value|
|
495
525
|
Value.of(value).pack(packer)
|
496
526
|
end
|