Skip to content

Commit

Permalink
Add support for "fullscan" option
Browse files Browse the repository at this point in the history
Closes #460
  • Loading branch information
nickkkccc committed Jan 24, 2024
1 parent 9ca555e commit 6592fcb
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.tarantool.driver.api.space.options.crud.OperationWithBatchSizeOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithBucketIdOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithFieldsOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithFullScanOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithForceMapCallOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithModeOptions;
import io.tarantool.driver.api.space.options.crud.OperationWithTimeoutOptions;
Expand All @@ -19,5 +20,5 @@
public interface SelectOptions<T extends SelectOptions<T>>
extends OperationWithBucketIdOptions<T>, OperationWithTimeoutOptions<T>, OperationWithFieldsOptions<T>,
OperationWithModeOptions<T>, OperationWithBatchSizeOptions<T>, OperationWithYieldEveryOptions<T>,
OperationWithForceMapCallOptions<T> {
OperationWithForceMapCallOptions<T>, OperationWithFullScanOptions<T> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.tarantool.driver.api.space.options.crud;

import java.util.Optional;

import io.tarantool.driver.api.space.options.Options;
import io.tarantool.driver.api.space.options.Self;
import io.tarantool.driver.api.space.options.crud.enums.ProxyOption;

public interface OperationWithFullScanOptions<T extends OperationWithModeOptions<T>> extends Options, Self<T> {

/**
* Sets "fullscan" option value to true. If true then a critical log entry will be skipped on potentially long
* select.
*
* @return this options instance.
*/
default T fullScan() {
addOption(ProxyOption.FULL_SCAN, true);
return self();
}

/**
* @return "fullscan" option value.
*/
default Optional<Boolean> getFullScan() {
return getOption(ProxyOption.FULL_SCAN, Boolean.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ public enum ProxyOption {

YIELD_EVERY("yield_every"),

FORCE_MAP_CALL("force_map_call");
FORCE_MAP_CALL("force_map_call"),

FULL_SCAN("fullscan");

private final String name;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,4 +271,19 @@ public void withForceMapCallTest() {
List<?> crudSelectOpts = client.eval("return crud_select_opts").join();
assertEquals(true, ((HashMap<?, ?>) crudSelectOpts.get(0)).get(ProxyOption.FORCE_MAP_CALL.toString()));
}

@Test
public void withFullScanTest() {
TarantoolSpaceOperations<TarantoolTuple, TarantoolResult<TarantoolTuple>> operations =
client.space(TEST_SPACE_NAME);

SelectOptions<ProxySelectOptions> options = ProxySelectOptions.create().fullScan();

assertTrue(options.getFullScan().isPresent());
assertTrue(options.getFullScan().get());

operations.select(Conditions.any(), options).join();
List<?> crudSelectOpts = client.eval("return crud_select_opts").join();
assertEquals(true, ((HashMap<?, ?>) crudSelectOpts.get(0)).get(ProxyOption.FULL_SCAN.toString()));
}
}

0 comments on commit 6592fcb

Please sign in to comment.