use of com.scalar.db.io.Column in project scalardb by scalar-labs.
the class CrudHandlerTest method scan_CalledAfterDeleteUnderRealSnapshot_ShouldReturnResultsWithoutDeletedRecord.
@Test
public void scan_CalledAfterDeleteUnderRealSnapshot_ShouldReturnResultsWithoutDeletedRecord() throws ExecutionException, CrudException {
// Arrange
Scan scan = prepareScan();
result = prepareResult(TransactionState.COMMITTED);
ImmutableMap<String, Column<?>> columns = ImmutableMap.<String, Column<?>>builder().put(ANY_NAME_1, TextColumn.of(ANY_NAME_1, ANY_TEXT_1)).put(ANY_NAME_2, TextColumn.of(ANY_NAME_2, ANY_TEXT_3)).put(Attribute.ID, ScalarDbUtils.toColumn(Attribute.toIdValue(ANY_ID_2))).put(Attribute.STATE, ScalarDbUtils.toColumn(Attribute.toStateValue(TransactionState.COMMITTED))).put(Attribute.VERSION, ScalarDbUtils.toColumn(Attribute.toVersionValue(2))).put(Attribute.BEFORE_ID, ScalarDbUtils.toColumn(Attribute.toBeforeIdValue(ANY_ID_1))).put(Attribute.BEFORE_STATE, ScalarDbUtils.toColumn(Attribute.toBeforeStateValue(TransactionState.COMMITTED))).put(Attribute.BEFORE_VERSION, ScalarDbUtils.toColumn(Attribute.toBeforeVersionValue(1))).build();
Result result2 = new ResultImpl(columns, TABLE_METADATA);
Map<Snapshot.Key, Optional<TransactionResult>> readSet = new HashMap<>();
Map<Snapshot.Key, Delete> deleteSet = new HashMap<>();
snapshot = new Snapshot(ANY_TX_ID, Isolation.SNAPSHOT, null, tableMetadataManager, parallelExecutor, readSet, new HashMap<>(), new HashMap<>(), deleteSet);
handler = new CrudHandler(storage, snapshot, tableMetadataManager);
when(scanner.iterator()).thenReturn(Arrays.asList(result, result2).iterator());
when(storage.scan(scan)).thenReturn(scanner);
Delete delete = new Delete(new Key(ANY_NAME_1, ANY_TEXT_1), new Key(ANY_NAME_2, ANY_TEXT_3)).forNamespace(ANY_NAMESPACE_NAME).forTable(ANY_TABLE_NAME);
// Act
handler.delete(delete);
List<Result> results = handler.scan(scan);
// Assert
assertThat(results.size()).isEqualTo(1);
assertThat(results.get(0)).isEqualTo(new FilteredResult(result, Collections.emptyList(), TABLE_METADATA));
// check the delete set
assertThat(deleteSet.size()).isEqualTo(1);
assertThat(deleteSet).containsKey(new Snapshot.Key(delete));
// check if the scanned data is inserted correctly in the read set
assertThat(readSet.size()).isEqualTo(2);
Snapshot.Key key1 = new Snapshot.Key(scan, result);
assertThat(readSet.get(key1).isPresent()).isTrue();
assertThat(readSet.get(key1).get()).isEqualTo(new TransactionResult(result));
Snapshot.Key key2 = new Snapshot.Key(scan, result2);
assertThat(readSet.get(key2).isPresent()).isTrue();
assertThat(readSet.get(key2).get()).isEqualTo(new TransactionResult(result2));
}
use of com.scalar.db.io.Column in project scalardb by scalar-labs.
the class FilteredResultTest method setUp.
@BeforeEach
public void setUp() {
// Arrange
Map<String, Column<?>> columns = ImmutableMap.<String, Column<?>>builder().put(ACCOUNT_ID, ScalarDbUtils.toColumn(ACCOUNT_ID_VALUE)).put(ACCOUNT_TYPE, ScalarDbUtils.toColumn(ACCOUNT_TYPE_VALUE)).put(BALANCE, ScalarDbUtils.toColumn(BALANCE_VALUE)).put(Attribute.ID, ScalarDbUtils.toColumn(ID_VALUE)).put(Attribute.STATE, ScalarDbUtils.toColumn(STATE_VALUE)).put(Attribute.VERSION, ScalarDbUtils.toColumn(VERSION_VALUE)).put(Attribute.PREPARED_AT, ScalarDbUtils.toColumn(PREPARED_AT_VALUE)).put(Attribute.COMMITTED_AT, ScalarDbUtils.toColumn(COMMITTED_AT_VALUE)).put(Attribute.BEFORE_PREFIX + BALANCE, ScalarDbUtils.toColumn(BEFORE_BALANCE_VALUE)).put(Attribute.BEFORE_ID, ScalarDbUtils.toColumn(BEFORE_ID_VALUE)).put(Attribute.BEFORE_STATE, ScalarDbUtils.toColumn(BEFORE_STATE_VALUE)).put(Attribute.BEFORE_VERSION, ScalarDbUtils.toColumn(BEFORE_VERSION_VALUE)).put(Attribute.BEFORE_PREPARED_AT, ScalarDbUtils.toColumn(BEFORE_PREPARED_AT_VALUE)).put(Attribute.BEFORE_COMMITTED_AT, ScalarDbUtils.toColumn(BEFORE_COMMITTED_AT_VALUE)).build();
result = new ResultImpl(columns, TABLE_METADATA);
}
use of com.scalar.db.io.Column in project scalardb by scalar-labs.
the class PutTest method withXXXValue_ProperValuesGiven_ShouldReturnWhatsSet.
@Test
public void withXXXValue_ProperValuesGiven_ShouldReturnWhatsSet() {
// Arrange
Put put = preparePut();
// Act
put.withBooleanValue("val1", true).withIntValue("val2", 5678).withBigIntValue("val3", 1234L).withFloatValue("val4", 4.56f).withDoubleValue("val5", 1.23).withTextValue("val6", "string_value").withBlobValue("val7", "blob_value".getBytes(StandardCharsets.UTF_8)).withBlobValue("val8", ByteBuffer.wrap("blob_value2".getBytes(StandardCharsets.UTF_8))).withBooleanValue("val9", null).withIntValue("val10", null).withBigIntValue("val11", null).withFloatValue("val12", null).withDoubleValue("val13", null).withTextValue("val14", null).withBlobValue("val15", (ByteBuffer) null).withBlobValue("val16", (byte[]) null);
// Assert
Map<String, Value<?>> values = put.getValues();
assertThat(values.size()).isEqualTo(16);
assertThat(values.get("val1")).isEqualTo(new BooleanValue("val1", true));
assertThat(values.get("val2")).isEqualTo(new IntValue("val2", 5678));
assertThat(values.get("val3")).isEqualTo(new BigIntValue("val3", 1234L));
assertThat(values.get("val4")).isEqualTo(new FloatValue("val4", 4.56f));
assertThat(values.get("val5")).isEqualTo(new DoubleValue("val5", 1.23));
assertThat(values.get("val6")).isEqualTo(new TextValue("val6", "string_value"));
assertThat(values.get("val7")).isEqualTo(new BlobValue("val7", "blob_value".getBytes(StandardCharsets.UTF_8)));
assertThat(values.get("val8")).isEqualTo(new BlobValue("val8", "blob_value2".getBytes(StandardCharsets.UTF_8)));
assertThat(values).containsKey("val9");
assertThat(values.get("val9")).isNull();
assertThat(values).containsKey("val10");
assertThat(values.get("val10")).isNull();
assertThat(values).containsKey("val11");
assertThat(values.get("val11")).isNull();
assertThat(values).containsKey("val12");
assertThat(values.get("val12")).isNull();
assertThat(values).containsKey("val13");
assertThat(values.get("val13")).isNull();
assertThat(values).containsKey("val14");
assertThat(values.get("val14")).isNull();
assertThat(values).containsKey("val15");
assertThat(values.get("val15")).isNull();
assertThat(values).containsKey("val16");
assertThat(values.get("val16")).isNull();
Map<String, Column<?>> columns = put.getColumns();
assertThat(columns.size()).isEqualTo(16);
assertThat(columns.get("val1")).isEqualTo(BooleanColumn.of("val1", true));
assertThat(columns.get("val2")).isEqualTo(IntColumn.of("val2", 5678));
assertThat(columns.get("val3")).isEqualTo(BigIntColumn.of("val3", 1234L));
assertThat(columns.get("val4")).isEqualTo(FloatColumn.of("val4", 4.56f));
assertThat(columns.get("val5")).isEqualTo(DoubleColumn.of("val5", 1.23));
assertThat(columns.get("val6")).isEqualTo(TextColumn.of("val6", "string_value"));
assertThat(columns.get("val7")).isEqualTo(BlobColumn.of("val7", "blob_value".getBytes(StandardCharsets.UTF_8)));
assertThat(columns.get("val8")).isEqualTo(BlobColumn.of("val8", "blob_value2".getBytes(StandardCharsets.UTF_8)));
assertThat(columns.get("val9")).isEqualTo(BooleanColumn.ofNull("val9"));
assertThat(columns.get("val10")).isEqualTo(IntColumn.ofNull("val10"));
assertThat(columns.get("val11")).isEqualTo(BigIntColumn.ofNull("val11"));
assertThat(columns.get("val12")).isEqualTo(FloatColumn.ofNull("val12"));
assertThat(columns.get("val13")).isEqualTo(DoubleColumn.ofNull("val13"));
assertThat(columns.get("val14")).isEqualTo(TextColumn.ofNull("val14"));
assertThat(columns.get("val15")).isEqualTo(BlobColumn.ofNull("val15"));
assertThat(columns.get("val16")).isEqualTo(BlobColumn.ofNull("val16"));
assertThat(put.getContainedColumnNames()).isEqualTo(ImmutableSet.of("val1", "val2", "val3", "val4", "val5", "val6", "val7", "val8", "val9", "val10", "val11", "val12", "val13", "val14", "val15", "val16"));
assertThat(put.containsColumn("val1")).isTrue();
assertThat(put.isNullValue("val1")).isFalse();
assertThat(put.getBooleanValue("val1")).isTrue();
assertThat(put.getValueAsObject("val1")).isEqualTo(true);
assertThat(put.containsColumn("val2")).isTrue();
assertThat(put.isNullValue("val2")).isFalse();
assertThat(put.getIntValue("val2")).isEqualTo(5678);
assertThat(put.getValueAsObject("val2")).isEqualTo(5678);
assertThat(put.containsColumn("val3")).isTrue();
assertThat(put.isNullValue("val3")).isFalse();
assertThat(put.getBigIntValue("val3")).isEqualTo(1234L);
assertThat(put.getValueAsObject("val3")).isEqualTo(1234L);
assertThat(put.containsColumn("val4")).isTrue();
assertThat(put.isNullValue("val4")).isFalse();
assertThat(put.getFloatValue("val4")).isEqualTo(4.56f);
assertThat(put.getValueAsObject("val4")).isEqualTo(4.56f);
assertThat(put.containsColumn("val5")).isTrue();
assertThat(put.isNullValue("val5")).isFalse();
assertThat(put.getDoubleValue("val5")).isEqualTo(1.23);
assertThat(put.getValueAsObject("val5")).isEqualTo(1.23);
assertThat(put.containsColumn("val6")).isTrue();
assertThat(put.isNullValue("val6")).isFalse();
assertThat(put.getTextValue("val6")).isEqualTo("string_value");
assertThat(put.getValueAsObject("val6")).isEqualTo("string_value");
assertThat(put.containsColumn("val7")).isTrue();
assertThat(put.isNullValue("val7")).isFalse();
assertThat(put.getBlobValue("val7")).isEqualTo(ByteBuffer.wrap("blob_value".getBytes(StandardCharsets.UTF_8)));
assertThat(put.getBlobValueAsByteBuffer("val7")).isEqualTo(ByteBuffer.wrap("blob_value".getBytes(StandardCharsets.UTF_8)));
assertThat(put.getBlobValueAsBytes("val7")).isEqualTo("blob_value".getBytes(StandardCharsets.UTF_8));
assertThat(put.getValueAsObject("val7")).isEqualTo(ByteBuffer.wrap("blob_value".getBytes(StandardCharsets.UTF_8)));
assertThat(put.containsColumn("val8")).isTrue();
assertThat(put.isNullValue("val8")).isFalse();
assertThat(put.getBlobValue("val8")).isEqualTo(ByteBuffer.wrap("blob_value2".getBytes(StandardCharsets.UTF_8)));
assertThat(put.getBlobValueAsByteBuffer("val8")).isEqualTo(ByteBuffer.wrap("blob_value2".getBytes(StandardCharsets.UTF_8)));
assertThat(put.getBlobValueAsBytes("val8")).isEqualTo("blob_value2".getBytes(StandardCharsets.UTF_8));
assertThat(put.getValueAsObject("val8")).isEqualTo(ByteBuffer.wrap("blob_value2".getBytes(StandardCharsets.UTF_8)));
assertThat(put.containsColumn("val9")).isTrue();
assertThat(put.isNullValue("val9")).isTrue();
assertThat(put.getBooleanValue("val9")).isFalse();
assertThat(put.getValueAsObject("val9")).isNull();
assertThat(put.containsColumn("val10")).isTrue();
assertThat(put.isNullValue("val10")).isTrue();
assertThat(put.getIntValue("val10")).isEqualTo(0);
assertThat(put.getValueAsObject("val10")).isNull();
assertThat(put.containsColumn("val11")).isTrue();
assertThat(put.isNullValue("val11")).isTrue();
assertThat(put.getBigIntValue("val11")).isEqualTo(0L);
assertThat(put.getValueAsObject("val11")).isNull();
assertThat(put.containsColumn("val12")).isTrue();
assertThat(put.isNullValue("val12")).isTrue();
assertThat(put.getFloatValue("val12")).isEqualTo(0.0F);
assertThat(put.getValueAsObject("val12")).isNull();
assertThat(put.containsColumn("val13")).isTrue();
assertThat(put.isNullValue("val13")).isTrue();
assertThat(put.getDoubleValue("val13")).isEqualTo(0.0);
assertThat(put.getValueAsObject("val13")).isNull();
assertThat(put.containsColumn("val14")).isTrue();
assertThat(put.isNullValue("val14")).isTrue();
assertThat(put.getTextValue("val14")).isNull();
assertThat(put.getValueAsObject("val14")).isNull();
assertThat(put.containsColumn("val15")).isTrue();
assertThat(put.isNullValue("val15")).isTrue();
assertThat(put.getBlobValue("val15")).isNull();
assertThat(put.getValueAsObject("val15")).isNull();
assertThat(put.containsColumn("val16")).isTrue();
assertThat(put.isNullValue("val16")).isTrue();
assertThat(put.getBlobValue("val16")).isNull();
assertThat(put.getValueAsObject("val16")).isNull();
}
use of com.scalar.db.io.Column in project scalardb by scalar-labs.
the class PutTest method getColumns_TryToModifyReturned_ShouldThrowException.
@Test
public void getColumns_TryToModifyReturned_ShouldThrowException() {
// Arrange
Put put = preparePut();
TextColumn column1 = TextColumn.of(ANY_NAME_1, ANY_TEXT_1);
TextColumn column2 = TextColumn.of(ANY_NAME_2, ANY_TEXT_2);
put.withValue(column1).withValue(column2);
// Act Assert
Map<String, Column<?>> values = put.getColumns();
assertThatThrownBy(() -> values.put(ANY_NAME_3, TextColumn.of(ANY_NAME_3, ANY_TEXT_3))).isInstanceOf(UnsupportedOperationException.class);
}
use of com.scalar.db.io.Column in project scalardb by scalar-labs.
the class DistributedStorageConditionalMutationIntegrationTestBase method put_withPutIf_shouldPutProperly.
private void put_withPutIf_shouldPutProperly(Map<String, Column<?>> initialData, Put put, boolean shouldMutate, Get get, String description) throws ExecutionException {
Throwable thrown = catchThrowable(() -> storage.put(put));
if (shouldMutate) {
assertThat(thrown).describedAs(description).isNull();
} else {
assertThat(thrown).describedAs(description).isInstanceOf(NoMutationException.class);
}
Optional<Result> result = storage.get(get);
assertThat(result).describedAs(description).isPresent();
assertThat(result.get().getContainedColumnNames()).describedAs(description).isEqualTo(ImmutableSet.of(PARTITION_KEY, COL_NAME1, COL_NAME2, COL_NAME3, COL_NAME4, COL_NAME5, COL_NAME6, COL_NAME7));
Map<String, Column<?>> expected = shouldMutate ? put.getColumns() : initialData;
assertThat(result.get().isNull(COL_NAME1)).describedAs(description).isEqualTo(expected.get(COL_NAME1).hasNullValue());
assertThat(result.get().getBoolean(COL_NAME1)).describedAs(description).isEqualTo(expected.get(COL_NAME1).getBooleanValue());
assertThat(result.get().isNull(COL_NAME2)).describedAs(description).isEqualTo(expected.get(COL_NAME2).hasNullValue());
assertThat(result.get().getInt(COL_NAME2)).describedAs(description).isEqualTo(expected.get(COL_NAME2).getIntValue());
assertThat(result.get().isNull(COL_NAME3)).describedAs(description).isEqualTo(expected.get(COL_NAME3).hasNullValue());
assertThat(result.get().getBigInt(COL_NAME3)).describedAs(description).isEqualTo(expected.get(COL_NAME3).getBigIntValue());
assertThat(result.get().isNull(COL_NAME4)).describedAs(description).isEqualTo(expected.get(COL_NAME4).hasNullValue());
assertThat(result.get().getFloat(COL_NAME4)).describedAs(description).isEqualTo(expected.get(COL_NAME4).getFloatValue());
assertThat(result.get().isNull(COL_NAME5)).describedAs(description).isEqualTo(expected.get(COL_NAME5).hasNullValue());
assertThat(result.get().getDouble(COL_NAME5)).describedAs(description).isEqualTo(expected.get(COL_NAME5).getDoubleValue());
assertThat(result.get().getText(COL_NAME6)).describedAs(description).isEqualTo(expected.get(COL_NAME6).getTextValue());
assertThat(result.get().getBlob(COL_NAME7)).describedAs(description).isEqualTo(expected.get(COL_NAME7).getBlobValue());
}
Aggregations