Merge pull request #6437 from seakider/imp_rsearch_param

Improvement - validate PARAMS in search method
pull/6442/head
Nikita Koksharov 1 week ago committed by GitHub
commit 9e67f94d7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -495,6 +495,9 @@ public class RedissonSearch implements RSearch {
args.add(options.getCount()); args.add(options.getCount());
} }
if (!options.getParams().isEmpty()) { if (!options.getParams().isEmpty()) {
if (options.getDialect() == null || options.getDialect() < 2) {
throw new IllegalArgumentException("When use 'PARAMS', you should set DIALECT to 2 or greater than 2.");
}
args.add("PARAMS"); args.add("PARAMS");
args.add(options.getParams().size()*2); args.add(options.getParams().size()*2);
for (Map.Entry<String, Object> entry : options.getParams().entrySet()) { for (Map.Entry<String, Object> entry : options.getParams().entrySet()) {

@ -1,6 +1,7 @@
package org.redisson; package org.redisson;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.redisson.api.RJsonBucket; import org.redisson.api.RJsonBucket;
import org.redisson.api.RMap; import org.redisson.api.RMap;
@ -49,6 +50,19 @@ public class RedissonSearchTest extends DockerRedisStackTest {
} }
} }
@Test
public void testSearchWithParam() {
RJsonBucket<String> b = redisson.getJsonBucket("doc:1", StringCodec.INSTANCE);
b.set("[{\"arr\": [1, 2, 3]}, {\"val\": \"hello\"}, {\"val\": \"world\"}]");
RSearch s = redisson.getSearch(StringCodec.INSTANCE);
Assertions.assertThrows(IllegalArgumentException.class, () ->
s.search("idx", "*", QueryOptions.defaults()
.returnAttributes(new ReturnAttribute("arr"),
new ReturnAttribute("val"))
.params(Collections.singletonMap("12", "323"))));
}
@Test @Test
public void testSearchNoContent() { public void testSearchNoContent() {
RMap<String, SimpleObject> m = redisson.getMap("doc:1", new CompositeCodec(StringCodec.INSTANCE, redisson.getConfig().getCodec())); RMap<String, SimpleObject> m = redisson.getMap("doc:1", new CompositeCodec(StringCodec.INSTANCE, redisson.getConfig().getCodec()));

Loading…
Cancel
Save