Skip to content

Commit dd4db5f

Browse files
committed
Add support for "force_map_call" option
Closes #459
1 parent 1121209 commit dd4db5f

File tree

4 files changed

+56
-2
lines changed

4 files changed

+56
-2
lines changed

src/main/java/io/tarantool/driver/api/space/options/SelectOptions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.tarantool.driver.api.space.options.crud.OperationWithBatchSizeOptions;
44
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
55
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
6+
import io.tarantool.driver.api.space.options.crud.OperationWithForceMapCallOptions;
67
import io.tarantool.driver.api.space.options.crud.OperationWithModeOptions;
78
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
89
import io.tarantool.driver.api.space.options.crud.OperationWithYieldEveryOptions;
@@ -17,5 +18,6 @@
1718
*/
1819
public interface SelectOptions<T extends SelectOptions<T>>
1920
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
20-
OperationWithModeOptions<T>, OperationWithBatchSizeOptions<T>, OperationWithYieldEveryOptions<T> {
21+
OperationWithModeOptions<T>, OperationWithBatchSizeOptions<T>, OperationWithYieldEveryOptions<T>,
22+
OperationWithForceMapCallOptions<T> {
2123
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.tarantool.driver.api.space.options.crud;
2+
3+
import java.util.Optional;
4+
5+
import io.tarantool.driver.api.space.options.Options;
6+
import io.tarantool.driver.api.space.options.Self;
7+
import io.tarantool.driver.api.space.options.crud.enums.ProxyOption;
8+
9+
/**
10+
* Base interface for all operation options that may have a configurable "force_map_call" option.
11+
*
12+
* @author Belonogov Nikolay
13+
*/
14+
public interface OperationWithForceMapCallOptions<T extends OperationWithForceMapCallOptions<T>>
15+
extends Options, Self<T> {
16+
17+
/**
18+
* Sets "force_map_call" option to true. if true then the map call is performed without any optimizations even,
19+
* default value is false.
20+
*
21+
* @return forceMapCall option value.
22+
*/
23+
default T forceMapCall() {
24+
addOption(ProxyOption.FORCE_MAP_CALL, true);
25+
return self();
26+
}
27+
28+
/**
29+
* @return "force_map_call" option value.
30+
*/
31+
default Optional<Boolean> getForceMapCall() {
32+
return getOption(ProxyOption.FORCE_MAP_CALL, Boolean.class);
33+
}
34+
}

src/main/java/io/tarantool/driver/api/space/options/crud/enums/ProxyOption.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public enum ProxyOption {
2525

2626
FIRST("first"),
2727

28-
YIELD_EVERY("yield_every");
28+
YIELD_EVERY("yield_every"),
29+
30+
FORCE_MAP_CALL("force_map_call");
2931

3032
private final String name;
3133

src/test/java/io/tarantool/driver/integration/proxy/options/ProxySpaceSelectOptionsIT.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import static org.junit.jupiter.api.Assertions.assertEquals;
3030
import static org.junit.jupiter.api.Assertions.assertNotNull;
3131
import static org.junit.jupiter.api.Assertions.assertNull;
32+
import static org.junit.jupiter.api.Assertions.assertTrue;
3233

3334
/**
3435
* @author Artyom Dubinin
@@ -255,4 +256,19 @@ public void withYieldEveryTest() {
255256
assertEquals(yieldEvery,
256257
((HashMap<?, ?>) crudSelectOpts.get(0)).get(ProxyOption.YIELD_EVERY.toString()));
257258
}
259+
260+
@Test
261+
public void withForceMapCallTest() {
262+
TarantoolSpaceOperations<TarantoolTuple, TarantoolResult<TarantoolTuple>> profileSpace =
263+
client.space(TEST_SPACE_NAME);
264+
265+
SelectOptions<ProxySelectOptions> options = ProxySelectOptions.create().forceMapCall();
266+
267+
assertTrue(options.getForceMapCall().isPresent());
268+
assertTrue(options.getForceMapCall().get());
269+
270+
profileSpace.select(Conditions.any(), options).join();
271+
List<?> crudSelectOpts = client.eval("return crud_select_opts").join();
272+
assertEquals(true, ((HashMap<?, ?>) crudSelectOpts.get(0)).get(ProxyOption.FORCE_MAP_CALL.toString()));
273+
}
258274
}

0 commit comments

Comments
 (0)