Skip to content

Commit f3ce88a

Browse files
authored
RCBC-492: InvalidArgument when vector is empty (#147)
1 parent e9930cc commit f3ce88a

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

lib/couchbase/search_options.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1099,13 +1099,23 @@ def to_h
10991099
"Number of candidates must be at least 1, #{num_candidates} given"
11001100
end
11011101

1102-
{
1102+
h = {
11031103
field: @vector_field_name,
11041104
vector: @vector_query,
11051105
vector_base64: @base64_vector_query,
11061106
k: num_candidates || 3,
11071107
boost: boost,
11081108
}.compact
1109+
1110+
raise Error::InvalidArgument, "The vector cannot be nil" if !h.include?(:vector) && !h.include?(:vector_base64)
1111+
raise Error::InvalidArgument, "The vector query cannot be an empty array" if h.include?(:vector) && h[:vector].empty?
1112+
1113+
if h.include?(:vector_base64) && h[:vector_base64].empty?
1114+
raise Error::InvalidArgument,
1115+
"The base64-encoded vector query cannot be empty"
1116+
end
1117+
1118+
h
11091119
end
11101120

11111121
# @api private

test/search_test.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,24 @@ def test_search_request_invalid_argument
220220
end
221221
end
222222

223+
def test_vector_query_empty
224+
vector_query = VectorQuery.new("foo", [])
225+
226+
assert_raises(Error::InvalidArgument) { vector_query.to_json }
227+
end
228+
229+
def test_base64_vector_query_empty
230+
vector_query = VectorQuery.new("foo", "")
231+
232+
assert_raises(Error::InvalidArgument) { vector_query.to_json }
233+
end
234+
235+
def test_vector_query_nil
236+
vector_query = VectorQuery.new("foo", nil)
237+
238+
assert_raises(Error::InvalidArgument) { vector_query.to_json }
239+
end
240+
223241
def test_vector_query_invalid_candidate_number
224242
vector_query = VectorQuery.new("foo", [-1.1, 1.2]) do |q|
225243
q.num_candidates = 0

0 commit comments

Comments
 (0)